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。是吗?谢谢你,先生,这工作做得很好。谢谢你的帮助。