Ich erstelle eine Anwendung mit Laravel und ich versuche, mit Eloquent arbeiten. Ich habe zwei Tabellen: Bestellungen und Artikel.Eloquent hasMany Filter und eifrig laden
Jeder Artikel hat einen Typ (int-Daten):
- 1 => Buch
- 2 => Video
Jeder Auftrag hat ein Buch und viele Videos.
In meinem Bestellmodell möchte ich ein Buch und andere Artikel Beziehungen haben. Also, ich diesen Code haben:
public function book()
{
return $this->hasMany('App\Item')->where('type', 1)->first();
}
public function others()
{
return $this->hasMany('App\Item')->where('type', '!=', 1)->get();
}
Aber, wenn ich mit meiner Beziehung eifrig Laden verwenden, bekam ich einen Fehler:
Order::with(['book', 'others'])->get();
Können Sie mir helfen, dieses Problem zu lösen?
Dank
Hallo Alexey, Es funktioniert für andere Danke! Aber für Buch-Beziehung, bekomme ich ein Array mit einem Objekt statt direkt ein Objekt ... –
@ D.Durand Ich habe es gerade getestet und Sie bekommen ein Objekt. Stellen Sie sicher, dass Sie die 'hasOne'-Beziehung verwenden. Um ein Buch zu erhalten, müssen Sie immer noch eine Sammlung von Bestellungen mit Büchern und anderen laden und darüber iterieren. –
Entschuldigung, ich benutze hasMany anstelle von hasOne! Letzte Frage: Warum sagst du, ist es besser, nicht wo innere Beziehungen zu verwenden? –