在这里情况。
我有一个user
表,一个role
表(不同的用户可以扮演相同的角色)和一个post
表(不同的用户可以链接到同一个帖子-多作者发布)。我还有两个联接表,它们链接user
和role
以及user
和post
。我已经建立了所有关系(多对多)。
但是现在我尝试获取所有具有特定role
(例如'id'= 2)并贡献给特定帖子(例如'id'= 45)的用户。
我可以用一个条件来做到这一点:
$roles = App\Role::where('id', 2)->first();
foreach ($roles->users as $user) {
}
但是我没有找到具有两个条件(role
id和post
id)的解决方案。
答案 0 :(得分:3)
您可以使用关系存在来实现您的目标。 whereHas()
函数用于检查关系是否存在。
假设您已经在模型上定义了关系
$roleId = 2;
$postId = 45;
$users = User::whereHas('role', function($query) use ($roleId) {
$query->where('id', $roleId);
})
->whereHas('post', function ($query) use ($postId) {
$query->where('id', $postId);
})
->get();