In user
:
public function posts() { return $this->hasMany(Post::class); }
In post
:
public function users() { return $this->belongsTo(Users::class); }
I handle in controller:
$user = Users::find('1')->posts;
Then I get an array and the result returned is exactly what I need.
But when I query this way because I need to get a lot of data, the result is an empty array. What did I do wrong?
In UserController.php
:
$listUser = Users::with('posts') ->select('name', 'title') ->where('type', 1) ->get(); // It returns posts as an empty array
Please give me any comments.
Advertisement
Answer
You have to select foreign key
in posts
:
$listUser = Users::select(['id', 'name']) ->with(['posts' => function($query) { $query->select(['user_id','title']); }]) ->where('type', 1) ->get();
or
$result = User::select(['id', 'name']) ->with(['posts:user_id, title']) ->get();