107 votes

Exécuter du SQL brut avec Doctrine 2

Je veux exécuter du SQL brut en utilisant Doctrine 2

Je dois tronquer les tables de la base de données et les initialiser avec des données de test par défaut.

172voto

Jason Swett Points 8368

Voici un exemple de requête brute dans Doctrine 2 que je suis en train de faire:

 public function getAuthoritativeSportsRecords()
{   
    $sql = " 
        SELECT name,
               event_type,
               sport_type,
               level
          FROM vnn_sport
    ";

    $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
    $stmt->execute();
    return $stmt->fetchAll();
}   
 

54voto

orourkedd Points 1281
//$sql - sql statement
//$em - entity manager

$em->getConnection()->exec( $sql );

14voto

Eric Leschinski Points 14289

Comment exécuter une requête brute et renvoyer les données.

Accrochez-vous à votre responsable et établissez une nouvelle connexion:

 $manager = $this->getDoctrine()->getManager();
$conn = $manager->getConnection();
 

Créez votre requête et fetchAll:

 $result= $conn->query('select foobar from mytable')->fetchAll();
 

Obtenez les données du résultat comme ceci:

 $this->appendStringToFile("first row foobar is: " . $result[0]['foobar']);
 

11voto

Jiew Meng Points 10155

J'ai découvert que la réponse est probablement:

NativeQuery vous permet d'exécuter du SQL natif en mappant les résultats en fonction de vos spécifications. Une telle spécification qui décrit comment un ensemble de résultats SQL est mappé à un résultat de Doctrine est représentée par un ResultSetMapping.

Source: SQL natif .

5voto

Toby Batch Points 131

J'ai eu le même problème. Vous souhaitez rechercher l'objet de connexion fourni par le gestionnaire d'entités:

 $conn = $em->getConnection();
 

Vous pouvez alors interroger / exécuter directement contre elle:

 $statement = $conn->query('select foo from bar');
$num_rows_effected = $conn->exec('update bar set foo=1');
 

Consultez la documentation de l'objet de connexion à l' adresse http://www.doctrine-project.org/api/dbal/2.0/doctrine/dbal/connection.html.

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