Одним из способов является использование метода построителя запросов whereHas () :
$user1->chats()->whereHas('users', function($q) use ($user2) {
$q->where('user_id', '=', $user2->id);
})->get();
В качестве передового опыта я лично хотел бы объединить нечто подобное с моделью (в этомв случае вашей модели чата) как область запроса для более легкого использования:
// class App\Chat
public function scopeWithUser($query, User $user)
{
$query->whereHas('users', function ($q) use ($user) {
$q->where('user_id', '=', $user->id);
});
}
Затем вы можете использовать его следующим образом:
// get common chats between user1 and user2
$user1->chats()->withUser($user2)->get();
// see if a common chat exists
$user1->chats()->withUser($user2)->exists();
, который я считаюочень читабельный.