【问题标题】:laravel query with case statement in where clause append IS NULL after condition在 where 子句中带有 case 语句的 laravel 查询在条件后追加 IS NULL
【发布时间】:2019-03-13 09:36:32
【问题描述】:
->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**

未从在查询末尾添加 IS NULL 的位置获取

【问题讨论】:

  • 能否提供完整的代码,而不是只提供 where 条件。

标签: mysql laravel eloquent


【解决方案1】:

用 whereRaw 替换你的 DB::raw

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

希望对你有帮助

【讨论】:

  • 你是我的英雄,救了我的命。谢谢亲爱的 VIPUL PRAJAPATI :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多