2012-10-12 22 views
21

Doctrine kullanarak Symfony2'de özel bir SQL sorgusu nasıl oluşturabilirim? Veya doktrinsiz, umrumda değil.Symfony2 & Doctrine: Özel SQL-Query oluştur

böyle çalışmaz:

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

teşekkür ederiz.

cevap

72

Sen Varlık Yöneticisi doğrudan bağlantı nesnesini almak ve bu doğrudan SQL sorguları çalıştırabilirsiniz: Ancak

$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(); 

, gerçekten gerekli olmadığı sürece bu karşı tavsiye ediyorum ... öğretinin DQL işleyebilir Neredeyse ihtiyacınız olabilecek neredeyse herhangi bir sorgu.

Resmi belgeler: http://doctrine-dbal.readthedocs.org/en/latest/reference/data-retrieval-and-manipulation.html

+10

: http://docs.doctrine-project.org/en/ son/referans/native-sql.html – Orbling

+0

Bir çekicilik gibi çalışır, teşekkürler :) – a1337q

+0

Mükemmel, çok teşekkürler! – iarroyo

1

Sen çalıştığını bu kodu yürütebilirsiniz:

da Doktrin Native SQL hüküm yoktur
$em = $this->getDoctrine()->getEntityManager(); 
$result= $em->createQuery($sql)->getResult(); 
+6

'$ em-> createQuery()' SQL, ancak DQL çalıştırmaz. – loostro