2016-11-07 23 views
0

Ich habe drei Modelle mit folgenden Daten:Laravel Eloquent Doppel Beziehung mit Bedingung

  1. Produkt

    • id
    • Name
    • Beschreibung
  2. Variant

    • id
    • Farbe
    • Typ
    • Privat
    • product_id
  3. Bild

    • url
    • va riant_id

So sind die Beziehungen sind:

  • Produkt hasMany Varianten
  • Variant hasMany Bilder

Ich brauche eine Sammlung aller Varianten zu erhalten, einschließlich der Eltern Produkt, weil ich auch seinen Namen brauche und die mit der Variante verbundenen Bilder mit den Bedingungen (auf Variante) -> wo ('Typ', 'OPT') und -> wo ("privat", falsch).

Ich habe versucht, es mit einer rohen SQL-Abfrage zu tun, aber ich muss die Bilder von Variant in der Blade-Vorlage durchlaufen, also brauche ich eine Sammlung. Wie kann ich alles zusammenstellen, ohne zu viele Abfragen auszuführen?

Antwort

1

Achten Sie darauf, diese Beziehungen auf Ihrem Variant Modell haben:

public function product() 
{ 
    return $this->belongsTo(Product::class); 
} 

public function images() 
{ 
    return $this->hasMany(Image::class); 
} 

Dann können Sie tun:

$collection = Variant::with('product', 'images') 
    ->where('type', 'OPT') 
    ->where('private', false) 
    ->get(); 
Verwandte Themen