Laravel concat在查询(where条件)


Laravel concat in query (where condition)

我是laravel的新手,面临构建简单查询的问题:

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

上面这行是封装查询条件中的几个条件之一。

我认为其他行对于这种情况是不必要的,但如果您需要看的话请告诉我。

我发现开发者决定添加一个

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

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

因为这是自动添加的,所以我不能在不覆盖larvel -core函数的情况下删除它。有没有基于sql的"黑客"?它能处理这两个?像1 = 1这样的式子?

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

Laravel在后台做了一些事情,比如为你添加标记。

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

对于这种类型的事情,DB::raw()通常工作得很好。试试这样做…

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

使用orWhereRaw执行raw where查询:

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