web-dev-qa-db-fra.com

Symfony2 & Doctrine: Créer une requête SQL personnalisée

Comment puis-je créer une requête SQL personnalisée dans Symfony2 à l'aide de Doctrine? Ou sans Doctrine, je m'en fiche.

Ne fonctionne pas comme ceci:

    $em = $this->getDoctrine()->getEntityManager();
    $em->createQuery($sql);
    $em->execute();

Merci.

22
a1337q

Vous pouvez obtenir l'objet Connection directement à partir d'Entity Manager et exécuter des requêtes SQL directement via celui-ci:

$em = $this->getDoctrine()->getManager(); // ...or getEntityManager() prior to Symfony 2.1
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT something FROM somethingelse WHERE id = :id");
$statement->bindValue('id', 123);
$statement->execute();
$results = $statement->fetchAll();

Cependant, je déconseille cela à moins que ce ne soit vraiment nécessaire ... Le DQL de Doctrine peut gérer presque toutes les requêtes dont vous pourriez avoir besoin.

Documentation officielle: https://www.doctrine-project.org/projects/doctrine-dbal/en/2.9/reference/data-retrieval-and-manipulation.html

83
Thomas Kelley