2017-01-09 78 views
1

我有一個具有數據透視表role_user的用戶模型。Laravel具有樞軸的雄辯查詢模型

在我的用戶表中我有一個字段'active'。

而且用戶可以有多個角色保存在數據透視表中。

我怎樣才能拉所有用戶的活動= 1和用戶在透視表中的具體角色?

回答

3

試試這個。這假設你在用戶和角色之間建立了雄辯的關係。我只在hasMany/belongsTo關係中使用過這種類型的查詢,但我認爲它也適用於您的示例。

$users = User::where('active', 1)->whereHas('roles', function ($query) { 
    $query->where('role', 'foo'); 
})->get(); 
+0

感謝你們對你的答案,@ jackel414有一個稍微乾淨的代碼和它的作品,但兩個答案都好! – lewis4u

3

要通過角色使用過濾用戶whereHas()方法:

User::whereHas('roles', function($q) use ($role) { 
    $q->where('role', $role); 
})->where('active', 1)->get(); 
+0

在這種情況下,wherePivot是否爲活動角色或用戶過濾?我認爲它可能是爲活躍角色過濾,但OP正在尋找活躍用戶。如果這不會過濾基於活動的用戶表,但這比我的答案更清晰。 – jackel414

+0

@ jackel414我確定'active'列在數據透視表中。我已經修復了代碼。謝謝你提到它。 )我已經提出了你的答案。 –