J'ai deux tables, User
et Post
. On User
peut en avoir plusieurs posts
et on post
n'appartient qu'à un seul user
.
Dans mon User
modèle, j'ai une hasMany
relation ...
public function post(){
return $this->hasmany('post');
}
Et dans mon post
modèle j'ai une belongsTo
relation ...
public function user(){
return $this->belongsTo('user');
}
Maintenant, je veux joindre ces deux tables en utilisant Eloquent with()
mais je veux des colonnes spécifiques de la deuxième table. Je sais que je peux utiliser le Générateur de requêtes, mais je ne veux pas.
Quand dans le Post
modèle j'écris ...
public function getAllPosts() {
return Post::with('user')->get();
}
Il exécute les requêtes suivantes ...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
Mais ce que je veux, c'est ...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
Quand j'utilise ...
Post::with('user')->get(array('columns'....));
Il ne renvoie que la colonne de la première table. Je veux des colonnes spécifiques à with()
partir de la deuxième table. Comment puis je faire ça?
$query->select('id','username');
, jeTrying to get property of non-object