2016-07-18 14 views
0

Ich habe eine Benutzertabelle mit einer Eigenschaft mit dem Namen roles, die im Array-Typ Doctrine ist. So sieht es in der Datenbank aus: roles in user tableWie verwende ich QueryBuilder und Doctrine Array?

Ich erstelle eine Abfrage mit Doctrine-Klasse QueryBuilder.
Im Moment sieht meine Abfrage wie folgt:

$queryBuilder->select(array("u.id", "u.roles")) 
     ->from("CNDUserBundle:User", "u") 
     ->setMaxResults(10) 
    ; 

Ich brauche eine Liste aller Benutzer mit einer bestimmten Rolle zu bekommen, aber ich weiß nicht, wie der Wert in der Lehre Array-Typ zu überprüfen.

+0

See [diese Antwort] (http://stackoverflow.com/questions/9016914/fos-bundle-how-to-select-users-with-a-specific-role) zu einer ähnlichen Frage – geoB

+0

So scheint die einzige Lösung mit der LIKE-Anweisung zu sein. Ich dachte Doctrine implementiert eine Methode, um den Array-Typ zu verwenden. Vielen Dank ! –

+1

Sie können IN verwenden, die überprüft, ob ein Wert in einem Array von Werten ist. – abdiel

Antwort

0
$queryBuilder->select(array("u.id", "u.roles")) 
    ->from("CNDUserBundle:User", "u") 
    ->where('u.role IN (:role)') 
    ->setParameter("role",array(1,2,3)) 
    ->setMaxResults(10) 
; 

etwas wie das