我不能幫你口才好,但我可以幫你用原始查詢。考慮到你的表被稱爲用戶和team_memberships(你的多對多表存儲成員),你可以做一個像這樣的原始查詢。
function checkCommonTeams($user_id_A, $user_id_B){
$common = DB::select(
DB::raw(
'SELECT users.*,teams.* FROM users as user_A
INNER JOIN team_memberships as teams ON user_A.id = teams.member_id
INNER JOIN team_memberships as teams_B ON teams_B.id = teams.id
WHERE teams_B.member_id = :user_B AND users.id = :user_A LIMIT 1'
),
['user_A' => $user_id_A, 'user_B' => $user_id_B]
);
return (!count($common)) ? false : true;
}
像這樣的東西應該工作以及執行查詢比兩個用戶的團隊和對每個值等檢查你只要你的數據庫是如何組織的檢查自己的方式更快。
如果他們共享團隊,這將返回true或false。
我的理念是,如果你可以在你的數據庫中做這樣的事情,那麼試着去做,因爲它應該幾乎總能比多重查詢和比較php中的值做得更好。