Doctrine 2: Do an pure SQL query

Il est parfois nécessaire lorsque l’on utilise Doctrine 2 d’effectuer une requête SQL et non une requête DQL. Pour cela nous pouvons utiliser la méthode createNativeQuery dans laquelle nous pouvons utiliser le langage SQL.

// La requête SQL
$sql = "SELECT u.address FROM user u WHERE u.sex = 'M' ";
// Construction de l'objet ResultSetMapping
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
// On définie quel champs doit être retourné dans la réponse
$rsm->addScalarResult('address', 'address');
// On récupère les résultats
$addresss = $this->getEntityManager()
->createNativeQuery($sql, $rsm)
->getScalarResult()
;

Plus d’information sur la doc officielle: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/native-sql.html

Sometimes we have to make an SQL query instead of DQL query. For that we can use createNativeQuery method for write in SQL.

// The SQL query
$sql = "SELECT u.address FROM user u WHERE u.sex = 'M' ";
// Building of ResultSetMapping
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
// Definition of the needed fields (they will in the result array)
$rsm->addScalarResult('address', 'address');
// We get back the results
$addresss = $this->getEntityManager()
->createNativeQuery($sql, $rsm)
->getScalarResult()
;

More documentation on official website: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/native-sql.html

2 réflexions sur « Doctrine 2: Do an pure SQL query »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *