I have two tables, User
and Post
. One User
can have many posts
and one post
belongs to only one user
.
In my User
model I have a hasMany
relation...
public function post(){
return $this->hasmany('post');
}
And in my post
model I have a belongsTo
relation...
public function user(){
return $this->belongsTo('user');
}
Now I want to join these two tables using Eloquent with()
but want specific columns from the second table. I know I can use the Query Builder but I don't want to.
When in the Post
model I write...
public function getAllPosts() {
return Post::with('user')->get();
}
It runs the following queries...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
But what I want is...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
When I use...
Post::with('user')->get(array('columns'....));
It only returns the column from the first table. I want specific columns using with()
from the second table. How can I do that?
id
) as well as any other column, or else your relationship will just returnnull
. Took me a minute to figure this one out. – Imp