Laravel concat查询(where条件)

时间:2014-08-11 13:22:22

标签: sql laravel

我对laravel(今天开始)很新,并且面临构建简单查询的问题:

$query->orWhere("CONCAT(`nvp`, ' ', `vpv`)", 'LIKE', "%$this->searchNeedle%");

上面这一行是封装查询条件中的几个条件之一。我认为其他行不是必要的,但请告诉我你是否需要看到它们。

我发现开发人员决定添加

  

`

在第一个orWhere / where param之前和之后导致我无法使用简单concat的问题,因为上面的行将导致:

`CONCAT(`vpv`, ' ', `nvp`)` LIKE ?)' 
↑                         ↑
this                    & this

由于这是自动添加的,我不能删除它而不会覆盖laravel-core函数,我不会。是否有任何基于SQL的“黑客”处理这两个`?你知道吗?1 = 1,你知道吗?

也许你有另一个解决方案让我得到预期的结果,将一个字符串与两行组合比较?

2 个答案:

答案 0 :(得分:27)

Laravel在幕后做了一些事情,比如为你添加刻度线。

幸运的是,它还提供了一些工具来为您完成工作......

对于这类事情,DB::raw()通常效果很好。尝试这样的事情......

$query->orWhere(DB::raw("CONCAT(`nvp`, ' ', `vpv`)"), 'LIKE', "%".$this->searchNeedle."%");

答案 1 :(得分:11)

使用orWhereRaw执行raw查询:

$query->orWhereRaw("CONCAT(`nvp`, ' ', `vpv`) LIKE ?", ['%'.$this->searchNeedle.'%']);