我有三個表user
,role
,permission
,user
的hasMany role
,role
的hasMany permission
,我想找出用戶誰擁有我給了允許,所以我用whereHas
如何使用orWhere在whereHas在Laravel
$user = User::whereHas('roles', function($q) {
$q->whereHas('permissions', $function($q) {
$q->where('name', $value);
});
});
結果是正確的,但如果我想通過更多條件搜索用戶,我給其他許可值並使用orWhere
,它會響應所有有權限的用戶,如何修復它?
$user = User::whereHas('roles', function($q) {
$q->whereHas('permissions', $function($q) {
$q->where('name', $value)->orWhere('name', $value2);
});
});
用戶與權限沒有關係,這是行不通的。 – Chan
我打算在第一個「where」子句中說「角色」而不是「權限」。我已經更新了答案,這應該起作用。 – marcanuy
我知道,我試過了,它顯示調用未定義的方法Illuminate \ Database \ Query \ Builder :: permissions() – Chan