Créer une requête SQL native dans Symfony2 avec Doctrine2

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

Utiliser des variables de session dans un template Twig

Si l’on souhaite appeler des variables de session à l’intérieur d’un template twig, on peut utiliser la variable globale app.session.

Exemple d’un objet Info déclaré dans un contrôleur :

$info = new Info();
$this->container->get('request')->getSession()->set('info', $info);

Pour l’appeler sa propriété titleMeta, depuis un template twig :

{{ app.session.get('info').titleMeta }}