$q->where('id', $sender->id)) ->whereHas('users', fn($q) => $q->where('id', $recipient->id)) ->first(); if ($existingInbox) { return $existingInbox; } return DB::transaction(function () use ($sender, $recipient) { $inbox = Inbox::create(); $inbox->users()->attach([$sender->id, $recipient->id]); return $inbox; }, 2); } }