2017-05-29 7 views
0

Es gibt drei Modelle:Eloquent Gruppierung in Beziehungen

Marken (id, name)

Beispiel

1, Mc Donald's

2 sein könnte, Help Desk

Einkaufszentren (id, name)

Beispiel:

1, Central Mall

Outlets (id, name, brand_id, mall_id)

Beispiel

1, könnte Mc Donald's Ground Floor, 1, 1

2, Mc Donald's Food Court, 1, 1

3, Help Desk Ground Floor, 2, 1

4, Help Desk First Floor, 2, 1

5, Help Desk Second Floor, 2, 1

Mit Beziehungen bereits im Modell definiert ist, würde Ich mag ein Ergebnis erhalten für Mall wie zu sein:

App\Mall::with('outlets.brand')->where('id',1)->get(); 

mir wie ein Ergebnis zu geben:

App\Mall { 
id: 1, 
name: "Central Mall", 
outlets:{ 
'1' => { 
    name:"Mc Donald's", 
    outlets: { 
      1 => { 
        'id' => 1, 
        'name'=> "Mc Donald's Ground Floor", 
       } , 
      2 => { 
        'id' => 2, 
        'name'=> "Mc Donald's Food Court", 
       } , 
      .... 
      } 
     } 
    } 
} 

Antwort

0

Dieser ungetestet ist, aber unter Verwendung von die [Collection::groupBy](https://laravel.com/docs/5.4/collections#method-groupby) Funktion, sollten Sie in der Lage sein, die Ausgänge zu gruppieren.

$mall = App\Mall::with('outlets.brand')->find(1); 
$outlets = $mall->outlets->groupBy('brand.name'); 
Verwandte Themen