1
我試圖建立在拉拉維爾4的消息系統。我有兩個類對話和用戶與他們之間的多對多關係。我在對話輸出已記錄在用戶的通話清單和用戶:在拉拉維爾急切的加載與多對多的關係4
@foreach(User::find(Auth::user()->id)->conversations as $conversation)
{{ $conversation->id }}
@foreach($conversation->users as $user)
{{ $user->name }}
@endforeach
<br><br>
@endforeach
這是工作和輸出對話ID,然後參加那次談話的用戶名。我的問題是,這種方式運行了很多查詢,我無法弄清楚如何使用預加載並仍然只能選擇登錄的用戶對話。任何幫助將非常感激!
編輯:
用下面的代碼我得到正確的輸出,但仍然查詢數據庫的很多:
<?php $user = User::with('conversations')->find(Auth::user()->id); ?>
{{ $user->username }}'s conversations<br><br>
@foreach($user->conversations as $conversation)
{{ $conversation->id }}
@foreach($conversation->users as $user)
{{ $user->name }}
@endforeach
<br>
@endforeach
我真的很希望能夠貪婪加載這部分@foreach( $ conversation->用戶爲$ user)。它輸出:
USER_1的對話
1 USER_1 user_2
5 USER_1 user_3
仍然對用戶運行兩個查詢。 User :: with('conversations') - > find(Auth :: user() - > id);只要Auth用戶被緩存,'會更有效率。否則,將Auth擴展到總是急切的加載對話會更好。 –
@Lucky Soni:是的,只有一個活躍用戶,但我需要循環用戶的對話。然後再次循環用戶進行每次對話。在嘗試解決方案後,我編輯了我的問題。希望你能幫忙,以便我可以標記爲已解決。 –
@ mr2_kasper檢查更新答案 –