首页 > 解决方案 > 生成的 sql 末尾的奇怪字符串 - “为空”

问题描述

我试图从数据库中选择一些记录,但它没有用。所以我把get()方法去掉,换成toSql()方法看看是什么。

  $events = DB::table("events")->where(DB::raw("(Month='$pm' and Day='$pd' and calendar='jalali') or (Month='$mm' and Day='$md' and calendar='gregorian') or (Month='$hm' and Day='$hd' and calendar='hijri')"))->toSql();
    
     dd($events);

它给了我这个:

select * from `events` where (Month='11' and Day='28' and calendar='jalali') or (Month='2' and Day='16' and calendar='gregorian') or (Month='7' and Day='4' and calendar='hijri') is null

最后是什么“为空”?

标签: laraveleloquent

解决方案


where 子句至少接受两个参数,你已经通过了一个。

第二个参数默认为“null”,这就是为什么您在查询末尾看到“is null”语句的原因

对于原始位置,您可以使用whereRaw

 $events = DB::table("events")->whereRaw("(Month='$pm' and Day='$pd' and calendar='jalali') or (Month='$mm' and Day='$md' and calendar='gregorian') or (Month='$hm' and Day='$hd' and calendar='hijri')")->toSql();

推荐阅读