Doctrine2 IZQUIERDA ÚNICA con 2 condiciones

Estoy tratando de encontrar un 'Producto' por ID y, a la izquierda, unir a todos sus 'Foto' en dos condiciones: la ubicación Y el estado activo.

Aquí está mi QueryBuilder:

$queryBuilder = $this->createQueryBuilder('p')
            ->select('p, photos, photoTranslation')
            ->leftJoin('p.photos', 'photos')
            ->leftJoin('photos.translations', 'photoTranslation')
            ->where('p.id = :id')
            ->andWhere('(photoTranslation.locale = :locale OR photoTranslation.locale IS NULL)')
            ->andWhere('(photoTranslation.active = :active OR photoTranslation.active IS NULL)')
            ->setParameters(array(
                'id' => $id
                'locale' => $this->getLocale(),
                'active' => true
             ));

Funciona bien cuando no hay fotos o cuando hay fotos ACTIVAS, pero no cuando hay una foto inactiva porque no coincide con una de las dos condiciones.

Si uso solo una condición, por ejemplo, solo la parte de la configuración regional, funciona bien:

$queryBuilder = $this->createQueryBuilder('p')
            ->select('p, photos, photoTranslation')
            ->leftJoin('p.photos', 'photos')
            ->leftJoin('photos.translations', 'photoTranslation')
            ->where('p.id = :id')
            ->andWhere('(photoTranslation.locale = :locale OR photoTranslation.locale IS NULL)')
            ->setParameters(array(
                'id' => $id
                'locale' => $this->getLocale()
             ));

Por ahora, hago un bucle en estos resultados y desarmo todas las fotos inactivas ... pero me gustaría una forma limpia de hacerlo en el QueryBuilder.

También intenté poner las condiciones en la cláusula LEFT JOIN:

->leftJoin('photo.translations', 'phototTranslation', Doctrine\ORM\Query\Expr\JOIN::WITH, 'photoTranslation.locale = :locale AND photoTranslation.active = :active')

Pero siempre devuelve la foto, incluso si está inactiva.

Respuestas a la pregunta(1)

Su respuesta a la pregunta