請教前輩!任何指教都感恩在先!
我有2張表格:
1、聊天室表 chat_rooms (model=ChatRoom)
id  name       status  
1   聊天一       1
2   聊天二       1
3   聊天三       1
2、聊天紀錄表 chat_records (model=ChatRecord)
id  聊天室id   發話者id   聊天內容    
1   1          1         id=1說的內容1
2   1          1         id=1說的內容2
3   1          1         id=1說的內容3
4   2          1         id=1說的內容4
5   2          1         id=1說的內容5
6   2          2         id=2說的內容1
7   3          2         id=2說的內容2
8   3          2         id=2說的內容3
9   3          2         id=2說的內容4
當我在 controller 中
$chatRooms = ChatRoom::where('status', 1)->orderBy('updated_at', 'desc')->get();
return view('test', compact('chatRooms'));
在 test.blade 中
<ul>
    @foreach ($chatRooms as $chatRoom)
    <li>{{ $chatRoom->name }}</li><br>
    @endforeach
</ul>
結果輸出
聊天一
聊天二
聊天三
但是這不是我希望得到的結果,我希望根據 Auth::user()->id 如果是1 則排除聊天紀錄中他沒有參與的聊天室,
如上例應該只得到結果輸出
聊天一
聊天二
請教一下前輩,這應該怎麼寫?
你在想辦法轉成 ORM 寫法吧
SELECT chat_rooms.*
FROM chat_rooms
INNER JOIN chat_records
ON chat_records.聊天室id = chat_rooms.id
WHERE chat_rooms.status = 1
AND chat_records.發話者id = Auth::user()->id
ORDER BY chat_rooms.updated_at DESC