2016-04-18 13 views
4

SQLクエリを実行しようとしています。特定の役割を持つユーザーを選択しようとしています。私のクエリ以下 :私のconfig.ymlでSymfony 2.5:配列をパラメータとしてWhere句を使用した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); 

私は役割ADMIN1、ADMIN2またはadmin3をのいずれかを持っているすべてのユーザーを選択したい私のユーザーの役割

parameters: 
    user_role: 
    - 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(); 
    } 
+0

あなたは 'ur.role'をどのように保存していますか?これは別のエンティティですか、それとも 'User'テーブルの中の列ですか? – tftd

+0

'user'テーブル内に列があります –

+0

実際に配列を直接渡すのではなく、おそらく' $ roleUser = implode( '、$ this-> container-> getParameter(' user_role ')); – tftd

答えて

2

setParameterの代わりsetParametersで試してみてください。これに代えて

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

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

はこれを試しますドキュメントにパラメータhereを設定する方法の詳細。

希望のヘルプ

関連する問題