How do you wrap Laravel Eloquent ORM query scopes in parentheses when chaining?

后端 未结 5 2046
不知归路
不知归路 2021-02-12 14:47

In Eloquent, I\'d like to generate this query:

SELECT * FROM table WHERE a=1 AND ( b=2 OR c=3 );

But I seem to be generating this query instead

5条回答
  •  不要未来只要你来
    2021-02-12 15:26

    To wrap queries, you can do something like this:

    $builder->where(function ($query) {
        $query->where('gender', 'Male')
            ->where('age', '>=', 18);
    })->orWhere(function($query) {
        $query->where('gender', 'Female')
            ->where('age', '>=', 65);   
    })
    

    It will output the following query:

    WHERE (gender = 'Male' and age >= 18) or (gender = 'Female' and age >= 65)
    

提交回复
热议问题