2017-01-09 41 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'列在数据透视表中。我已经修复了代码。谢谢你提到它。 )我已经提出了你的答案。 –