Obter colunas específicas usando a função “With ()” no Laravel Eloquent
Eu tenho duas mesas,User
ePost
. 1User
pode ter muitosposts
e umpost
pertence a apenas umuser
.
No meuUser
modelo eu tenho umhasMany
relação...
public function post(){
return $this->hasmany('post');
}
E no meupost
modelo eu tenho umbelongsTo
relação...
public function user(){
return $this->belongsTo('user');
}
Agora eu quero juntar essas duas tabelas usandoEloquent with()
mas deseja colunas específicas da segunda tabela. Eu sei que posso usar o Query Builder, mas não quero.
Quando noPost
modelo eu escrevo ...
public function getAllPosts() {
return Post::with('user')->get();
}
Ele executa as seguintes consultas ...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
Mas o que eu quero é ...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
Quando eu uso ...
Post::with('user')->get(array('columns'....));
Apenas retorna a coluna da primeira tabela. Eu quero colunas específicas usandowith()
da segunda mesa. Como eu posso fazer isso?