У меня есть две таблицы, User
и Post
. У одного User
может быть много, posts
а у одного post
- только один user
.
В моей User
модели у меня есть hasMany
отношение ...
public function post(){
return $this->hasmany('post');
}
И в моей post
модели у меня есть belongsTo
отношение ...
public function user(){
return $this->belongsTo('user');
}
Теперь я хочу объединить эти две таблицы, используя Eloquent with()
отдельные столбцы из второй таблицы. Я знаю, что могу использовать Query Builder, но не хочу.
Когда в Post
модели я пишу ...
public function getAllPosts() {
return Post::with('user')->get();
}
Он запускает следующие запросы ...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
Но то, что я хочу, это ...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
Когда я использую ...
Post::with('user')->get(array('columns'....));
Возвращает только столбец из первой таблицы. Я хочу использовать конкретные столбцы with()
из второй таблицы. Как я могу это сделать?
$query->select('id','username');
, я получалTrying to get property of non-object