【问题标题】:Symfony 2.5 : sql query with Where IN Clause using an array as a parameterSymfony 2.5:使用数组作为参数的 Where IN 子句的 sql 查询
【发布时间】:2016-08-10 11:18:15
【问题描述】:

我正在尝试运行 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);

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

parameters:
  user_role:
   - ADMIN1
   - ADMIN2
   - ADMIN3

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

这是错误信息:

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();
    }

【问题讨论】:

  • 你是如何存储ur.role 的?这是一个单独的实体还是User 表中的一列?
  • 它是user 表中的一列
  • 我认为你应该$roleUser = implode(',', $this->container->getParameter('user_role')); 而不是直接传递数组。

标签: php mysql sql-server symfony doctrine-orm


【解决方案1】:

尝试使用setParameter 而不是setParameters

试试这个:

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

而不是这个:

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

更多关于在文档中设置参数here的信息。

希望有帮助

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多