私のUserテーブルには「roles」という関係があります。Laravel where期待どおりに動作していません
この関係は次のとおりです。
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テーブルのフィールドは、この問題は、クエリの前のorWhere句によって引き起こされたよう
これを試す必要があります: '$ role_id = 3; User :: whereHas( 'role'、function($ q)use($ role_id){ $ q->ここで( 'id'、$ role_id); }) - > get(); ' –
@HirenGohel私の答えを編集してコメントを投稿しました。あなたのコメントは実用的な解決策ですが、私のwhereHasもその州で働いていましたが、残りのコードには問題がありました。 – Lovelock
あなたはあなたの 'orWhere'条件が正しく機能していないと言っていますか? –