Запрос Laravel или приоритет оператора - PullRequest
0 голосов
/ 01 июля 2019

Я использую запрос laravel 4.Я хочу получить данные по условию ИЛИЕсть ли какое-либо правило приоритета с Laravel 4?

Мой запрос:

SELECT * 
FROM order_items 
WHERE (status = 'Y' OR (status = 'N' AND amount > 100)) 
AND product_id = '15' 
LIMIT 1;

У меня есть 2 заказа, но я хочу, чтобы первый элемент в результате получил статус приоритета = 'Y', если его там нет, то он отвечает второму условию ИЛИ.

Вот мой код 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 Ответ

1 голос
/ 01 июля 2019

Может быть, вы должны попробовать этот путь

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