對(duì)于Laravel 的多對(duì)多關(guān)聯(lián)該如何查詢?nèi)齻€(gè)表useridname1aaa2bbb3cccroleidname1管理員2編輯3普通用戶4特殊用戶role_userrole_iduser_id1123334123224232模型里都定義了正確的多對(duì)多關(guān)聯(lián)User::with('roles')->whereHas('roles', function($query) {
$query->whereIn('role_id', [2,4]);
})->get();如果使用上面這種方式查詢出來(lái)的是用戶權(quán)限為『編輯或者特殊用戶』的用戶。該如何查詢『即是編輯又是特殊用戶』的 user 數(shù)據(jù)呢
2 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
查詢『即是編輯又是特殊用戶』,其實(shí)就是獲取 role_id=2
和 role_id=4
的 user_id 的交集,用 SQL 可以寫(xiě)成:
SELECT user_idFROM role_userWHERE role_id IN (2, 4)GROUP BY user_idHAVING COUNT(user_id) = 2
在 Laravel 中可以寫(xiě)成:
User::with('roles')->whereHas('roles', function($query) { $query->whereIn('role_id', [2, 4]) ->groupBy('user_id') ->havingRaw('COUNT(user_id) = ?', [2]); })->get()

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
只需要改寫(xiě)一下where條件就ok了
User::with('roles')->whereHas('roles', function($query) { $query->where('role_id', 2) ->where('role_id', 4); })->get();
- 2 回答
- 0 關(guān)注
- 412 瀏覽
添加回答
舉報(bào)
0/150
提交
取消