Il peut être intéressant voir obligatoire dans certains cas complexes d’avoir recours aux requêtes SQL native directement dans Symfony2, tout en passant par l’ORM et en récupérant des objets à la suite de cette requête.
Voici un exemple d’utilisation dans un Repository Symfony2:
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping(); $rsm->addEntityResult('Novaway\Bundle\CmsBundle\Entity\Project', 'p'); $rsm->addFieldResult('p', 'id', 'id'); $rsm->addFieldResult('p', 'title', 'title'); $sql = 'SELECT p.id, p.title FROM project p JOIN project_related pr ON p.id = pr.related_project_id WHERE pr.project_id = ?'; $query = $this->_em->createNativeQuery($sql, $rsm); $query->setParameter(1, $idProject); $projects = $query->getResult();