Laravel哪里没有按预期工作

时间:2017-08-02 10:16:29

标签: php laravel laravel-5 eloquent laravel-eloquent

我的用户表上有一个名为'roles'的关系。

这种关系是:

public function roles()
{
    return $this->hasMany('App\RoleUser');
}

我只是尝试获取角色为3的用户。

我的查询是:

User::where('name', $name)
    ->orWhere('email', $email)
    ->whereHas('roles', function ($q) {
        $q->where('id', 3);
    })->get();

然而,无论他们的角色是什么,这都会让所有用户回归。我可以确认所有用户都有角色,角色关系正常。

role_user表中的字段是'id','user_id'

1 个答案:

答案 0 :(得分:0)

看起来这个问题是由查询中的前一个orWhere子句引起的。

查看问题中的原始查询:

User::where('name', $name)
    ->orWhere('email', $email)
    ->whereHas('roles', function ($q) {
        $q->where('id', 3);
    })->get();

这就是名称的名称' name'并且用户具有角色并且包括角色3.该查询还引入了任何具有与我提供的电子邮件匹配的电子邮件的结果,但因为它是'或者其他'它忽略了其他要求。