首页 > 解决方案 > Doctrine Query Builder,如何转义单引号?

问题描述

我正在尝试运行替换查询,如下所示:

$qb = $this->createQueryBuilder('q');

$qb->where("REPLACE(q.name,'-','') = :q")->setParameter('q', $q);

return $qb->getQuery()->execute();

这将正常工作。

问题是我尝试替换单引号"REPLACE(q.name,'\'','') = :q"

它会抱怨它无法逃脱它。

"REPLACE(q.name,'\\'','') = :q"或相同"REPLACE(q.name,\"'\",'') = :q"

有任何想法吗?

标签: mysqlsymfonydoctrine-ormdoctrine

解决方案


为什么不添加第二个参数?由于REPLACE默认情况下在 Doctrine 中不存在,我认为您已经添加了beberlei/DoctrineExtensions包。使用此软件包,以下内容将起作用。

$qb->where("REPLACE(q.name,:s,'') = :q")
    ->setParameter('q', $q)
    ->setParameter('s', "'");

推荐阅读