首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >modx xpdo语句中的CONCAT的正确语法是什么

modx xpdo语句中的CONCAT的正确语法是什么
EN

Stack Overflow用户
提问于 2015-02-12 06:30:06
回答 1查看 205关注 0票数 0

我正在尝试处理搜索工具中的空格-专门用于处理名字和姓氏,我可以让我的查询在命令行上工作,但当我试图将它们转换为modx/pdo语法时,我得不到结果。因为标准没有被正确翻译

我所拥有的是:

代码语言:javascript
复制
$criteria->where(array(
    'Entities.first_name:LIKE' => "%$searchQuery%",
    'OR:Entities.cams:LIKE' => "%$searchQuery%",
    'OR:Entities.last_name:LIKE' => "%$searchQuery%",
    'OR:Entities.company:LIKE' => "%$searchQuery%",
    'OR:CONCAT(`Entites`.`first_name`," ",`Entities`.`last_name`):LIKE' => "%$searchQuery%",
        ));

问题出在最后的OR:CONCAT行,如果我转储查询,我的where子句如下所示:

代码语言:javascript
复制
WHERE  ( 
`Entities`.`first_name` LIKE '%first last%' 
OR `Entities`.`cams` LIKE '%first last%' 
OR `Entities`.`last_name` LIKE '%first last%' 
OR `Entities`.`company` LIKE '%first last%' 
OR `CONCAT(`Entites`.`first_name`," ",`Entities` LIKE '%first last%' 
)

它在合并之前添加了一个反记号,并省略了.last_name)

正确的语法是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 10:24:09

高级条件通常需要构造为字符串,而不是键=>值对。

以下内容并不完全符合原始查询,但应该会得到相同的结果:

代码语言:javascript
复制
$c->where(array(
    'Entities.first_name:LIKE' => "%$searchQuery%",
    'OR:Entities.cams:LIKE' => "%$searchQuery%",
    'OR:Entities.last_name:LIKE' => "%$searchQuery%",
    'OR:Entities.company:LIKE' => "%$searchQuery%",
));
$c->orCondition("CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'");

或者将整个Or条件集作为字符串传递,以准确地重新生成查询:

代码语言:javascript
复制
$c->where("
    Entities.first_name LIKE '%$searchQuery%'
    OR Entities.cams LIKE '%$searchQuery%'
    OR Entities.last_name LIKE '%$searchQuery%'
    OR Entities.company LIKE '%$searchQuery%'
    OR CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'
");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28465805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档