Symfony2, créer querybuilder clause where, pas de vide ou n'est pas null

J'ai un tableau de type champ de l'Entité, en

MyEntity.php

/**
 * @var string
 *
 * @ORM\Column(name="excepcionMenu", type="array", length=255, nullable=true)
 */
private $excepcion;

Je voudrais obtenir un QueryBuilder pour sélectionner pas vide ou pas null dans $excepcion champ.

Je suis en train
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();
}

Mais cela renvoie tous les enregistrements de la table.

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

Mais cela renvoie zéro des enregistrements.

ce champ dans la base de données stocke les valeurs de cette façon:

a:0:{} //empty
N; //null
a:2:{i:0;i:2;i:1;i:4;} //not empty or not null

Est-il possible de faire cela avec le QueryBuilder ou devrait être fait avec DQL?

merci beaucoup


Mise à JOUR de la solution contribué par @Attila Szalay

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();
}
Pourquoi $excepcion est une chaîne de frappe et de la colonne est de type tableau?
car il a pour but de sauver plusieurs options possibles. Formulaire Twig rend plusieurs cases à cocher.
Savez-vous qu'un tableau ne peut pas être nulle en PHP?
Je sais, mais le type de tableau dans la doctrine n'est pas exactement un tableau en php. Retrait nullable=true de la définition d'un champ dans l'entité, le résultat est le même, pour créer un nouvel item vide, la valeur stockée dans la base de données est toujours N; et le résultat de la requête.

OriginalL'auteur jjgarcía | 2016-01-12