2016-07-19 27 views
0

因此,我希望加載多個關係(如下所示),該關係正常工作。但是,我想在該熱切負載上運行一個函數(如下所示)。通常我只會在一個熱切的負載關係上做到這一點,但我想在三者之間做到這一點。但該查詢僅適用於最後的熱切負載(即instagram_oauths)。Laravel - 使用多個`with()`急切加載並在所有上運行查詢

有沒有辦法來急切負載多重關係運行,適用於所有3個關係,一個單獨的查詢?下面不會出錯......只適用return $oauth->withWeeklyStats($date);到最後with變量,instagram_oauths

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

恐怕是不可能的,因爲幼蟲爲了填補關係而進行單獨的查詢。 –

+0

Agh。很害怕。那麼有沒有一種乾淨的(不同的)方式來運行呢?用''功能來運行3'似乎對我來說過分了。 –

+0

您使用的是什麼版本的PHP? –

回答

1

這是不可能的,因爲幼蟲做單獨的查詢,以填補關係,相反,你可以使用這個:

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

另一種方法是使用JOINSQuery Builder

+0

奇怪,但 - 我得到的第一個頁面加載正確的輸出,但如果我再次刷新......數據已經一去不復返了......? –

+0

Nm ...我有一些奇怪的緩存,我不得不修復。 :) 謝謝你的幫助。 –

相關問題