2012-10-12 14 views
21

बनाएँ मैं सिद्धांत का उपयोग कर Symfony2 में एक कस्टम SQL क्वेरी कैसे बना सकता हूं? या सिद्धांत के बिना, मुझे परवाह नहीं है।सिम्फनी 2 और सिद्धांत: कस्टम एसक्यूएल-क्वेरी

इस तरह काम नहीं करता:

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

धन्यवाद।

उत्तर

72

आप इकाई प्रबंधक से सीधे कनेक्शन वस्तु प्राप्त कर सकते हैं, और SQL क्वेरी, जो के माध्यम से सीधे चलाएँ:

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

हालांकि, मैं जब तक यह वास्तव में आवश्यक है इस के खिलाफ सलाह देंगे ... सिद्धांत के DQL संभाल कर सकते हैं लगभग किसी भी प्रश्न की आपको आवश्यकता हो सकती है।

आधिकारिक प्रलेखन: http://doctrine-dbal.readthedocs.org/en/latest/reference/data-retrieval-and-manipulation.html

+10

वहाँ भी सिद्धांत में मूल निवासी एसक्यूएल प्रावधान नहीं है: http://docs.doctrine-project.org/en/ नवीनतम/संदर्भ/देशी-sql.html – Orbling

+0

एक आकर्षण की तरह काम करता है, धन्यवाद :) – a1337q

+0

इसका सही, बहुत धन्यवाद !! – iarroyo

1

आप इस कोड यह काम करता है पर अमल कर सकते हैं:

$em = $this->getDoctrine()->getEntityManager(); 
$result= $em->createQuery($sql)->getResult(); 
+6

'$ em-> createQuery()' एसक्यूएल निष्पादित नहीं करता है, लेकिन डीक्यूएल। – loostro