In user
:
JavaScript
x
public function posts()
{
return $this->hasMany(Post::class);
}
In post
:
JavaScript
public function users()
{
return $this->belongsTo(Users::class);
}
I handle in controller:
JavaScript
$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
:
JavaScript
$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
:
JavaScript
$listUser = Users::select(['id', 'name'])
->with(['posts' => function($query) {
$query->select(['user_id','title']);
}])
->where('type', 1)
->get();
or
JavaScript
$result = User::select(['id', 'name'])
->with(['posts:user_id, title'])
->get();