Laravel查询或运算符优先级

时间:2019-07-01 12:31:59

标签: php mysql laravel laravel-4

我正在使用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中,它没有给出结果。

1 个答案:

答案 0 :(得分:1)

也许您应该尝试这种方式

DB::table('order_items')
        ->where('status', 'Y')
        ->orWhere(function($query)
        {
            $query->where('status', 'N')
                  ->where('amount', '>', '100');
        })
    ->where('product_id', 15)
        ->first();