2012-08-28 7 views
5

क्या एक सिद्धांत 2 इकाई सम्मिलन के लिए एसक्यूएल प्राप्त करना संभव है?एक डॉक्टर 2 इकाई सम्मिलित करने के लिए एसक्यूएल प्राप्त करें

$foo = new Foo(); 
$foo->setName('bar'); 
$em->persist($foo); 
$em->flush(); 

वहाँ एक रास्ता सम्मिलित बयान वहाँ के लिए एसक्यूएल प्राप्त करने के लिए है:

उदाहरण के लिए, मान लीजिए कि मैं इस डालते हैं? यदि हां, तो कैसे?

उत्तर

6

आप अपने MySQL सर्वर में क्वेरी लॉग को सक्रिय कर सकता है (अनुमान लगा यह यह है): /etc/mysql/my.ini में (सामान्य स्थान): तुम कहाँ मिलेगा

[mysqld] 
log=/tmp/mysql.log 

तो इस फ़ाइल को पढ़ने प्रत्येक जारी क्वेरी।

+0

ओह, हाँ, ओह। धन्यवाद। –

+0

और अनियमित के लिए, आपको कॉन्फ़िगरेशन फ़ाइल को अपडेट करने के बाद 'सुडो सेवा mysql पुनरारंभ करें' चलाने की आवश्यकता हो सकती है। –

+0

जब आपका डाटाबेस डेटा-गहन होता है तो यह हमेशा सुविधाजनक नहीं होता है। कुछ लॉगिंग प्रोग्रामेटिक तरीके से करने का तरीका होना अच्छा होगा – Dennis

3

आप एसक्यूएल-लॉगर की कोशिश कर सकते:

$em->flush(); // to write cached stuff down and isolate the following 

// activate logger 
$em->getConnection() 
    ->getConfiguration() 
    ->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger()); 

$foo = new Foo(); 
$foo->setName('bar'); 
$em->persist($foo); 
$em->flush(); 

// disable logger 
$em->getConnection() 
    ->getConfiguration() 
    ->setSQLLogger(null); 

यह भी MySQL के अलावा अन्य डीबीएमएस के साथ काम करता है। फाइलों में लिखने के लिए अन्य संभावनाएं भी हैं। यहाँ देखो:

https://www.brunsware.de/blog/symfony/monolog-doctrine-logfile.html

http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^