Laravel mysql если еще условие - PullRequest
0 голосов
/ 18 марта 2020

Как использовать условие if else в mysql

Вот мой код

$couponQry = Coupon::select('*')
    ->where('generate_coupon', '=', 0)
    ->where('coupon_soft_delete', '=', 0)
    ->where('expiry_date', '>=', date('Y-m-d'))
    ->whereRaw("(coupon_limitation=1 AND coupon_usage>coupon_used) OR (coupon_limitation=0 AND coupon_used>=0)");

$couponData = $couponQry->get();

coupon_limitation | coupon_usage | coupon_used | generate_coupon
1                    1                 1           0
0                    0                 5           0

Здесь я должен получить только второй ряд. Потому что coupon_limitation равен 1, а если coupon_limitation равен 1, coupon_usage должен быть больше, чем coupon_used (Активные купоны, Неограниченное использование купона). Если coupon_usage и coupon_used равны, и coupon_limitation 1 заканчивается срок действия купона (заархивированный купон, использование ограниченного купона).

Если coupon_limitation равен 0, мне не нужно проверять coupon_used и coupon_usage (всегда активен до конца срока действия). Спасибо

1 Ответ

0 голосов
/ 19 марта 2020

Мне понравилось и все отлично работает

$couponQry = Coupon::select('*')
    ->where('generate_coupon', '=', 0)
    ->where('coupon_soft_delete', '=', 0)
    ->where('expiry_date', '>=', date('Y-m-d'))
    ->whereRaw("CASE WHEN coupon_limitation=1 THEN coupon_usage>coupon_used ELSE coupon_usage>=0 END");

$couponData = $couponQry->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...