Symfony 将通配符与条令的createQuery方法一起使用

Symfony 将通配符与条令的createQuery方法一起使用,symfony,doctrine,Symfony,Doctrine,有人能告诉我为什么这个查询不起作用吗?我也试着交替使用单引号和双引号 $em = $this->getDoctrine()->getManager(); $query = $em->createQuery('SELECT t FROM AcmeBlogBundle:BlogTag t WHERE t.title LIKE \'%:title%\'') ->setParameter('title', $keyword); 条令只是返回无效的参数编号:绑定变量的数量与令牌

有人能告诉我为什么这个查询不起作用吗?我也试着交替使用单引号和双引号

$em = $this->getDoctrine()->getManager();

$query = $em->createQuery('SELECT t FROM AcmeBlogBundle:BlogTag t WHERE t.title LIKE \'%:title%\'')
->setParameter('title', $keyword);
条令只是返回无效的参数编号:绑定变量的数量与令牌的数量不匹配

另外,使用createQuery方法或createQueryBuilder执行这样的查询是否更好?

另请参见php文档中的

因此,您需要执行以下操作:

$qb=$em->createQueryBuilder; $qb ->选择“标记” ->来自'AcmeBlogBundle:BlogTag','tag' ->其中$qb->expr->like'tag.title',':title' ->设置参数'title','%'$关键字“%” ; 或

$query=$em->createQuery'从AcmeBlogBundle:BlogTag t中选择t,其中t.title类似于:title'; $query->setParameter'title','%'$关键词''%';
我更喜欢使用查询生成器,因为它更便于结构化和使语句更易于维护

我认为您需要选择所有表,因为您必须使用select*。。。而不是选择t。是吗?谢谢你,先生,这工作做得很好。谢谢你的帮助。