У меня есть Post и User модель с отношением один к одному, и это хорошо работает:
//User.php
public function post(){
    return $this->hasOne(Post::class);
}
// Post.php
public function user() {
    return $this->belongsTo(User::class);
}
теперь я создаю ресурсы API:
php artisan make:resource Post
php artisan make:resource User
Мне нужно вернуть все сообщения с помощью вызова API, затем я установил свой маршрут:
//web.php: /resource/posts
Route::get('/resource/posts', function () {
    return PostResource::collection(Post::all());
});
это мой класс ресурса сообщений:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
use App\Http\Resources\User as UserResource;
class Posts extends Resource
{
/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
      return [
        'id' => $this->id,
        'title' => $this->title,
        'slug' => $this->slug,
        'bodys' => $this->body,
        'users' => UserResource::collection($this->user),
        'published' => $this->published,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}
}
это ошибка:
Call to undefined method Illuminate\Database\Query\Builder::mapInto()
если я удалю:
'users' => UserResource::collection($this->user),
это работает, но мне нужно включить отношения в мой API, я прочитал и следовал за документом в https://laravel.com/docs/5.5/collections.
это мой класс ресурсов пользователя:
"""
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class User extends Resource
{
/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
   return [
       'user_id' => $this->user_id,
       'name' => $this->name,
       'lastname' => $this->lastname,
       'email' => $this->email
   ];
}
}
есть идеи, где я не прав?