我有这种关系:
Chat->belongsToMany(User)
User->belongsToMany(Chat)
我需要以这样的方式查询关系,以使我同时获得属于2个用户的聊天记录。
是否有一种优雅的方法可以在不循环$user->chats
的情况下使用Laravel,然后在循环$chat->users
的内部进行查找,确定其中一个用户是否是第二个用户?
答案 0 :(得分:1)
您可以与路口去所有常见的聊天:
$commonChats = $userA->chats->intersect($userB->chats);
或者通过查询:
$commonChats = $userA->chats()->whereHas('users', function($q) use($userB) {
$q->where('id', $userB->id);
})->get();