一尘不染

Laravel Concat在查询中(条件)

sql

我对laravel(今天开始)很陌生,并且在构建简单查询时遇到了问题:

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

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

我发现开发人员决定添加一个

`

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

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

因为这是自动添加的,所以我不能删除它而不会覆盖我不会的laravel-core函数。是否存在处理这两个`的基于SQL的“ hack”?像1 =1这样的方式,您知道吗?

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


阅读 309

收藏
2021-03-17

共1个答案

一尘不染

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

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

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

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