laravel DB :: raw()奇怪的行为

时间:2014-06-05 04:31:57

标签: mysql laravel laravel-4

我有这个问题:

$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。为什么要这样改变呢?我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

使用whereRaw并传递一个字符串。

您不应该像这样使用where()。它需要3个参数,如下:

where('column', 'operator', 'value');

如果你保留第3个参数,它将默认为whereNull(),这就是为什么你"为空"追加。要将原始语句放在where子句中,您应该使用whereRaw().