Ich entwickle eine Web-API mit Laravel 5.0, bin mir jedoch nicht sicher, welche Abfrage ich erstellen möchte.
Meine Klassen sind wie folgt:
class Event extends Model {
protected $table = 'events';
public $timestamps = false;
public function participants()
{
return $this->hasMany('App\Participant', 'IDEvent', 'ID');
}
public function owner()
{
return $this->hasOne('App\User', 'ID', 'IDOwner');
}
}
und
class Participant extends Model {
protected $table = 'participants';
public $timestamps = false;
public function user()
{
return $this->belongTo('App\User', 'IDUser', 'ID');
}
public function event()
{
return $this->belongTo('App\Event', 'IDEvent', 'ID');
}
}
Jetzt möchte ich alle Veranstaltungen mit einem bestimmten Teilnehmer erhalten. Ich habe versucht mit:
Event::with('participants')->where('IDUser', 1)->get();
aber die where
Bedingung wird auf die Event
und nicht auf ihre angewendet Participants
. Folgendes gibt mir eine Ausnahme:
Participant::where('IDUser', 1)->event()->get();
Ich weiß, dass ich das schreiben kann:
$list = Participant::where('IDUser', 1)->get();
for($item in $list) {
$event = $item->event;
// ... other code ...
}
Es scheint jedoch nicht sehr effizient zu sein, so viele Anfragen an den Server zu senden.
Was ist der beste Weg, um where
mit Laravel 5 und Eloquent eine Modellbeziehung durchzuführen ?