2016-04-18 4 views
4

Ich versuche SQL-Abfrage auszuführen. Ich versuche, Benutzer mit bestimmten Rollen auszuwählen. Unter meiner Anfrage:Symfony 2.5: SQL-Abfrage mit WHERE IN-Klausel mit einem Array als Parameter

$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 meinem config.yml definiert ich meine Benutzerrollen

parameters: 
    user_role: 
    - ADMIN1 
    - ADMIN2 
    - ADMIN3 

ich alle Benutzer auswählen möchten, die eine der Rolle ADMIN1, ADMIN2 oder Admin3 hat. Hier

ist die Fehlermeldung:

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

Wie speichern Sie die 'ur.role'? Ist dies eine separate Entität oder ist es eine Spalte innerhalb der 'User' Tabelle? – tftd

+0

Es ist ein colum innerhalb der 'Benutzer' Tabelle –

+0

Ich denke, Sie sollten wahrscheinlich $ RoleUser = implode (',', $ this-> container-> getParameter ('user_role'))); 'anstatt das Array direkt übergeben. – tftd

Antwort

2

Versuchen mit setParameter statt setParameters:

versuchen, dieses:

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

statt dessen:

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

Weitere Informationen zum Einstellen der Parameter here im Dokument.

Hoffe diese Hilfe

Verwandte Themen