2016-07-19 8 views
0

So möchte ich mehrere Beziehungen laden (wie unten), die funktioniert wie es sollte. Ich möchte jedoch eine Funktion auf diese eifrige Last (wie unten) ausführen. Normalerweise mache ich das nur auf einer eifrigen Lastbeziehung, aber ich möchte es auf allen dreien tun. Die Abfrage arbeitet jedoch nur für die letzte Eager-Ladung (d. H. instagram_oauths).Laravel - Mit mehreren `mit()` eifrig laden und Ausführen einer Abfrage auf alle

Gibt es eine Möglichkeit zu eifrig Last mehrere Beziehungen UND Lauf eine separate Abfrage, die für alle drei Beziehungen gilt? Der unten angegebene Fehler gilt nicht ... gilt nur return $oauth->withWeeklyStats($date); bis zum letzten with Variable, instagram_oauths.

return $data = Team::currentTeam()->with(['facebook_oauths', 'twitter_oauths', 'instagram_oauths' => function($oauth) use ($date) { 
    return $oauth->withWeeklyStats($date); 
}])->get(); 
+0

Ich fürchte, das ist NICHT möglich, da Larval getrennte Abfragen machen, um Beziehungen zu füllen. –

+0

Agh. Hatte Angst so. Gibt es eine saubere (andere) Art, dies zu tun? Running 3 'mit' Funktionen scheint mir ein Overkill. –

+0

Welche Version von PHP verwenden Sie? –

Antwort

1

Dies ist nicht möglich, da Larven getrennte Abfragen machen, um Beziehungen zu füllen, stattdessen können Sie verwenden:

Team::currentTeam()->with(array_fill_keys(['facebook_oauths', 'twitter_oauths', 'instagram_oauths'], function($oauth) use($date) { 
     return $oauth->withWeeklyStats($date); 
}))->get(); 

Eine weitere Alternative JOINS mit den Query Builder verwenden würde.

+0

Seltsam obwohl - ich bekomme die richtige Ausgabe auf der ersten Seite laden, aber wenn ich wieder auffrischen ... Daten sind weg ...? –

+0

Nm ... Ich hatte ein seltsames Caching, das ich reparieren musste. :) Danke für Ihre Hilfe. –

Verwandte Themen