5 votes

Requête native Doctrine 2.0 sans mapping

Je suis en train d'écrire une toute petite migration script et j'essaie seulement de mettre à jour un attribut d'un élément. Le résultat dont j'ai besoin n'a pas de représentation dans l'environnement local, donc ce dont j'ai besoin c'est d'un handler SQL très simple (ici c'est Oracle) sur lequel je peux itérer et obtenir un tableau en retour.

Est-ce possible avec la doctrine ?

c'est-à-dire que je voudrais faire cela :

$query = "SELECT t2.status FROM t2 LEFT JOIN t1 ON t1.id = t2.foreinkey";
$iterator = $connection->execute($query)->iterate();
foreach ($iterator as $array) {
    // do something with an associative array
}

MISE À JOUR / SOLUTION : Avec l'aide de Corbin, j'ai trouvé cette solution qui fonctionne très bien :

$query = "SELECT t2.status FROM t2 LEFT JOIN t1 ON t1.id = t2.foreinkey";
$iterator = $connection->query($query);
while (is_object($iterator) AND ($array = $iterator->fetch()) !== FALSE) {
        // do something with an associative array
}

7voto

Corbin Points 17420

https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html#native-sql

Si vous voulez faire de la cartographie.

Une autre option serait de récupérer l'objet de connexion à partir de EntityManager::getConnection et de l'utiliser.

Elle renvoie une Doctrine \DBAL\Connection avec laquelle vous devriez pouvoir travailler. Il possède les fonctions typiques fetchColumn fetchArray fetchAssoc, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X