为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 查询或运算符优先级

Laravel 查询或运算符优先级

PHP
冉冉说 2021-09-18 17:09:50
我正在使用 laravel 4 查询。我想通过 OR 条件获取数据。Laravel 4 是否有任何优先级规则?我的查询是:SELECT * FROM order_items WHERE (status = 'Y' OR (status = 'N' AND amount > 100)) AND product_id = '15' LIMIT 1;我有 2 个订单项目,但我希望结果中的第一个项目将获得优先状态 = 'Y',如果它不存在,则它满足 OR 的第二个条件。这是我的 Laravel 代码:$sql_select = "SELECT *                FROM order_items                 WHERE (status = 'Y' OR (status = 'N' AND amount > 100))                 AND product_id = '15'                 LIMIT 1";$data = DB::select($sql_select);echo "<pre>";print_r($data);die;对于简单的 mysql 查询,它可以工作,但在 laravel 中它没有给出结果。
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

也许你应该试试这种方式


DB::table('order_items')

        ->where('status', 'Y')

        ->orWhere(function($query)

        {

            $query->where('status', 'N')

                  ->where('amount', '>', '100');

        })

    ->where('product_id', 15)

        ->first();


查看完整回答
反对 回复 2021-09-18
?
www说

TA贡献1775条经验 获得超8个赞

伟大的解决方案 andreeab。


在我的情况下,SQL 查询是:


SELECT ... WHERE c1 = 'xyz' AND (c2 = 100 OR c2 = 200);


我在 Eloquent 中写道:


 DB:table('tablename')

    ->where('c1', '=', 'xyz')

    ->where(function($query)

    {

       ->where('c2', '=', 100)

       ->orWhere('c2', '=', 200);

    })

    ->get();


查看完整回答
反对 回复 2021-09-18
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信