Symfony 2.5:使用数组作为参数的Where IN子句的SQL查询

时间:2022-01-27 03:23:08

I am trying to run sql query. I am trying to select users with specific roles. Below my query:

我正在尝试运行SQL查询。我正在尝试选择具有特定角色的用户。在我的查询下面:

  $roleUser= $this->container->getParameter('user_role');

  $query = $this->getDoctrine()->getEntityManager()
      ->createQuery(
          'SELECT u FROM UserBundle:User ur
          WHERE ur.role  IN :role_user')
     ->setParameters('role_user',$roleUser);

In my config.yml I defined my user roles

在我的config.yml中,我定义了我的用户角色

parameters:
  user_role:
   - ADMIN1
   - ADMIN2
   - ADMIN3

I want to select all the user that has one of the role ADMIN1, ADMIN2 or ADMIN3.

我想选择具有ADMIN1,ADMIN2或ADMIN3角色之一的所有用户。

Here is the error message:

这是错误消息:

Warning: Invalid argument supplied for foreach() in /Test/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php line 246
{
    $types = array();
    foreach ($this->parameters as $parameter) {
        /** @var Query\Parameter $parameter */
        $types[$parameter->getName()] = $parameter->getType();
    }

1 个解决方案

#1


2  

Try with setParameter instead of setParameters:

尝试使用setParameter而不是setParameters:

try this:

尝试这个:

 ->setParameter('role_user',$roleUser);

instead of this:

而不是这个:

 ->setParameters('role_user',$roleUser);

More info about setting parameters here in the doc.

有关在doc中设置参数的更多信息。

Hope this help

希望这有帮助

#1


2  

Try with setParameter instead of setParameters:

尝试使用setParameter而不是setParameters:

try this:

尝试这个:

 ->setParameter('role_user',$roleUser);

instead of this:

而不是这个:

 ->setParameters('role_user',$roleUser);

More info about setting parameters here in the doc.

有关在doc中设置参数的更多信息。

Hope this help

希望这有帮助