Laravel où sur l'objet relationnel
Je suis le développement d'une api web avec Laravel 5.0, mais j'ai un doute au sujet d'une requête.
Mes classes sont présentes:
class Event extends Model {
//
protected $table = 'events';
public $timestamps = false;
public function partecipants()
{
return $this->hasMany('App\Partecipant', 'IDEvent', 'ID');
}
public function owner()
{
return $this->hasOne('App\User', 'ID', 'IDOwner');
}
}
et
class Partecipant extends Model {
//
protected $table = 'partecipants';
public $timestamps = false;
public function user()
{
return $this->belongTo('App\User', 'IDUser', 'ID');
}
public function event()
{
return $this->belongTo('App\Event', 'IDEvent', 'ID');
}
}
Maintenant, je veux obtenir tous les événements avec un partecipant.
J'ai essayé avec:
Event::with('partecipants')->where('IDUser', 1)->get();
mais la condition est appliquée sur les Événements de la classe, et non pas sur les Participants.
Cela au lieu de me donner une exception:
Partecipant::where('IDUser', 1)->event()->get();
Je sais que je peux écrire ceci:
$list = Partecipant::where('IDUser', 1)->get();
for($item in $list) {
$event = $item->event;
...other code....
}
mais ne pas courir trop de requêtes vers le serveur?
Alors, où est le meilleur moyen d'effectuer cette requête avec Laravel et Éloquent?
source d'informationauteur Lic | 2015-05-01
Vous devez vous connecter pour publier un commentaire.
La syntaxe correcte pour ce faire, sur vos relations:
Lire plus à https://laravel.com/docs/5.0/eloquent#eager-loading
P. S. C'est "participant", pas "partecipant".