使用DoctrineExtensions在Doctrine 2中的FIND_IN_SET

时间:2018-02-08 10:32:02

标签: mysql symfony doctrine-orm zend-framework2

这是我的查询

 $sql = 'SELECT users.userId as userId
      FROM App\UserProjects up
      LEFT JOIN up.user users 
      WHERE up.project = :project AND FIND_IN_SET(:comp, up.company)';
 $query = $this->getEntityManager()->createQuery($sql);
 $query->setParameter('project', 3);
$query->setParameter('comp', 4);
$results = $query->getResult();

但这给了我错误

  

[语法错误]第0行,第1栏:错误:预期=,<,< =,<>,>,> =,!=,得到字符串结尾。

我做错了什么? 有工作吗? 我正在搜索的字段有逗号分隔值,如果FIND_IN_SET不起作用,还有其他方法我可以做同样的查询吗?

我正在使用此扩展程序 https://github.com/beberlei/DoctrineExtensions

2 个答案:

答案 0 :(得分:1)

FIND_IN_SET为您提供搜索元素的索引。你必须将它与某些东西进行比较:

FIND_IN_SET(:comp, up.company) != 0

您应该使用IN代替它,它不需要任何扩展

AND :comp IN up.company

答案 1 :(得分:0)

我建议您直接使用symfony bundle "wrapper"而不是库,因为它可以帮助您以正确的方式注册和使用扩展程序。

如果您正在寻找文档,请阅读here