2017-12-14 3 views
0

dies meine eloquent query:Wie bekomme ich eine Ebene eifrig Laden in Laravel 5.5?

$data = Disciplines::where('type', '<>', 'Initiator') 
       ->with(['discipline_boxes.assign.box' => function($query) { 
         $query->select('id'); 
       }]) 
       ->get(); 

    return $data; 

i zurückkehren wollen nur Array von IDs der Box Beziehung z: [2,3,4,5]

+0

nicht "-> toArray()" Arbeit? – Amarnasan

+0

Alle haben Sie in der Dokumentation. Lesen und implementieren Sie einfach: https://laravel.com/docs/5.5/eloquent-relationships#eager-loading –

+0

Haben Sie die inverse für alle diese Beziehungen definiert? – lagbox

Antwort

0

Gelöst !! das hat für mich funktioniert!

$disciplines = new Disciplines(); 
      $results = $disciplines->getAllBox_ID()->toArray(); 
      dd(array_flatten(array_pluck($results,'discipline_boxes.*.assign.box.id'))); 
0

Potenziell, wenn Sie die inverse für diese Kette von Beziehungen haben könnten Sie diese Informationen aus dem Box Ende erhalten (Name Annahmen hier machen):

Box::whereHas('assign.discipline_box.discipline', function ($q) { 
    $q->where('type', '<>', 'Initiator'); 
})->pluck('id');