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