Ich habe eine Art Array-Feld in Entity,Symfony2, erstellen Querybuilder where-Klausel, nicht leer ist oder nicht null
MyEntity.php
/**
* @var string
*
* @ORM\Column(name="excepcionMenu", type="array", length=255, nullable=true)
*/
private $excepcion;
Ich möchte einen Querybuilder erhalten wählen nicht leer oder nicht null in $ excepcion Feld.
Ich versuche MyEntityRepository.php
public function findAllExcepcionesByItem($itemId) {
$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion IS NOT NULL')
->getQuery();
return $query->getResult();
}
Aber diese gibt alle Datensätze der Tabelle.
public function findAllExcepcionesByItem($itemId) {
$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion IS NULL')
->getQuery();
return $query->getResult();
}
Aber das gibt Null Datensätze zurück.
dieses Feld in der Datenbank speichert die Werte in dieser Art und Weise:
a:0:{} // empty
N; // null
a:2:{i:0;i:2;i:1;i:4;} // not empty or not null
Ist es möglich, dies mit Querybuilder zu tun, oder sollte mit DQL getan werden?
Dank viel
AKTUALISIERT Lösung von @Attila Szalay beigetragen
public function findAllExcepcionesByItem($itemId) {
$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion != :null')->setParameter('null', serialize(null)) //not null
->andWhere('p.excepcion != :empty')->setParameter('empty', serialize([])) //not empty
->getQuery();
return $query->getResult();
}
Warum $ Excepcion ist Zeichenfolge eingeben und Spaltentyp ist Array? – scoolnico
, weil es mehrere mögliche Optionen speichern muss. Form on Twig rendert mehrere Kontrollkästchen. –
Wissen Sie, dass ein Array in PHP nicht null sein kann? – scoolnico