我有这个问题:
$feed = Feed::where(DB::raw('LOWER(feeds.title) LIKE LOWER("%'.$a.'%")'))->orderBy('created_at','DESC')->paginate(10);
但由于某种原因,Laravel将其更改为:
SQL: select * from `feeds` where LOWER(feeds.title) LIKE LOWER("%variable%") is null order by `created_at` desc limit 10 offset 0
注意WHERE子句之后的is null
。为什么要这样改变呢?我该怎么做呢?
答案 0 :(得分:1)
使用whereRaw
并传递一个字符串。
您不应该像这样使用where()
。它需要3个参数,如下:
where('column', 'operator', 'value');
如果你保留第3个参数,它将默认为whereNull()
,这就是为什么你"为空"追加。要将原始语句放在where子句中,您应该使用whereRaw().