use Doctrine\ORM\Query\ResultSetMapping; $sql = "SELECT p.id pid,t.id FROM Produit p LEFT JOIN Tarif t ON t.produit_id = p.id WHERE p.actif = 1 AND t.id = ( SELECT id FROM Tarif t2 WHERE t2.produit_id = p.id AND (t2.date_debut is null OR t2.date_debut <= :ddebut) AND (t2.date_fin is null OR t2.date_fin > :dfin) AND (t2.is_promo = 1 OR t2.is_promo = :is_promo) AND t2.prix_vente_unitaire_ht > 0 ORDER BY t2.date_debut desc LIMIT 1 ) "; $rsm = new ResultSetMapping; $rsm->addEntityResult('EPS\MonBundle\Entity\Tarif', 't'); $rsm->addFieldResult('t', 'id', 'id'); $qns = $this->_em->createNativeQuery($sql, $rsm); $qns->setParameter('ddebut', $dateTarif) ->setParameter('dfin', $dateTarif) ->setParameter('is_promo', intval($onlypromo)); qns->getResult();
Pour la fonction addEntityResult() et addJoinedEntityResult() il faut mettre l’objet sous la forme « Societe\ProjetBundle\Entity\Objet » et non pas « SocieteProjetBundle:Objet »