запрос laravel с оператором case в предложении where append равен НУЛЮ после условия

#mysql #laravel #eloquent

#mysql #laravel #красноречивый

Вопрос:

 ->where([
         'er.id_user_request_to' => $nIdUser
       ])
->where(DB::raw('case WHEN ge.id_user IS NOT NULL THEN ge.id_user = '.$nIdUser.' ELSE 0 END'))
  

попытался напечатать запрос, используя следующий код

 $qry = vsprintf(str_replace(array('%', '?'), array('%%', '"%s"'), $oEvents->toSql()), $oEvents->getBindings());
dd($qry);
  

Это выводит запрос типа

 WHERE
(
    `er`.`id_user_request_to` = "6") 
    AND(
         CASE WHEN ge.id_user IS NOT NULL THEN ge.id_user = 6 ELSE 0 END
       )
) **IS NULL**
  

Не получение того, откуда он добавляет, РАВНО НУЛЮ в конце запроса

Комментарии:

1. можете ли вы предоставить весь код вместо только условия where.

Ответ №1:

Замените ваш DB::raw на whereRaw

 ->where([
     'er.id_user_request_to' => $nIdUser
   ])
->whereRaw(('case WHEN ge.id_user IS NOT NULL THEN ge.id_user = '.$nIdUser.' ELSE 0 END'))
  

Я надеюсь, что это поможет

Комментарии:

1. ТЫ МОЙ ГЕРОЙ, СПАС МОЮ ЖИЗНЬ. СПАСИБО, ДОРОГОЙ ВИПУЛ ПРАДЖАПАТИ 🙂