我有一個名爲「服務」的模型,另一個名爲「許可證」。服務有許多許可證,並且許可證屬於一項服務。Laravel Eloquent閱讀條目包括關係的最佳實踐
當我想返回所有服務,包括他們的執照我目前做以下
$services = Auth::user()->services;
foreach($services as $service) {
$service->licenses;
}
這是工作,但我很想有一些清潔劑,因爲我用這個經常和有時非常深結構。
我有一個名爲「服務」的模型,另一個名爲「許可證」。服務有許多許可證,並且許可證屬於一項服務。Laravel Eloquent閱讀條目包括關係的最佳實踐
當我想返回所有服務,包括他們的執照我目前做以下
$services = Auth::user()->services;
foreach($services as $service) {
$service->licenses;
}
這是工作,但我很想有一些清潔劑,因爲我用這個經常和有時非常深結構。
如果您只是試圖加載所有相關記錄,則可以使用預先加載或懶惰預先加載來完成,兩者都接受嵌套關係。
在你的榜樣,因爲你已經有用戶裝載,則可以使用load()
方法懶惰貪婪加載相關的記錄:
Auth::user()->load('services.licenses');
dd(Auth::user());
定期預先加載的工作方式相同:
$user = User::with('services.licenses')->find(Auth::user()->id);
dd($user);
如果許可證會有另一種關係 - 是否有一種方法來加載這也使用急於加載? (AUth :: user() - > load('services.licenses.example')? –
@FrankProvost是的,沒有限制嵌套關係的深度(當然除了可用內存)。 – patricus
嘗試:$ services = Services :: all(); –
這不是我想要的。我不想要所有服務,我正在尋找類似「 - > services-> deep」,以便所有關係都返回 –
您可以使用https://laravel.com/docs/5.1/eloquent-relationships#eager-加載。我希望這能幫到您。 –