Получить определенные столбцы, используя функцию «С ()» в Laravel Eloquent
У меня есть две таблицы,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()
со второго стола. Как я могу это сделать?