Sommaire

L’écriture d’une requête SQL et l’obtention des Objets mappésobjets mappés

On peut associer à une requête SQL un objet de type ResultSetMapping ResultSetMappingpour mapper le tableau de valeurs dans un objet.

Les valeurs de la requête sont traduites en propriétés de l’objet.

Il suffit d’instancier un objet $rsm :

$rsm = new ResultSetMappingBuilder($this->getEntityManager());

puis de lui associer une classe :

    $rsm->addEntityResult(MyClass::class, "m");

Il faut mapper le nom de chaque colonne en base de données sur les propriétés de nos entités :

foreach ($this->getClassMetadata()->fieldMappings as $monObjet) { 
        $rsm->addFieldResult("m", $monObjet["columnName"], 
$monObjet["fieldName"]); 
    }

Enfin, nous exécutons notre requête SQL en transmettant l’objet  $rsm :

$stmt = $this->getEntityManager()->createNativeQuery($sql, $rsm);