मुझे ऐसा लगता है कि डॉक्ट्रिन ओडीएम का उपयोग करना इस तक पहुंचने का सही तरीका नहीं है। आप अभी भी डेटाबेस से जुड़ने और उन्हें क्वेरी करने के लिए सिद्धांत का उपयोग कर सकते हैं। लेकिन यदि आपके पास कोई निकाय वर्ग नहीं है तो एक निकाय प्रबंधक का उपयोग अनुपयुक्त प्रतीत होता है।
कनेक्शन प्रबंधन के लिए सिद्धांत का उपयोग करें
यहां बताया गया है कि आप Connection
. सिद्धांत के साथ डेटाबेस से कनेक्शन कैसे बनाते हैं? कक्षा:
/** @var \Doctrine\Bundle\DoctrineBundle\ConnectionFactory $connectionFactory */
$connectionFactory = $this->getContainer()->get('doctrine.dbal.connection_factory');
$connection = $connectionFactory->createConnection(
array('pdo' => new \PDO("mysql:host=$hostname;dbname=$dbname", $username, $password))
);
अब आप $connection
. का उपयोग कर सकते हैं एक साधारण PDO
. के रूप में वस्तु:
$connection->executeQuery('SELECT * FROM your_table');
आप इस कोड को सेवा . के रूप में जोड़ सकते हैं इसे हर जगह पहुंच योग्य बनाने के लिए।
यदि आप किसी भिन्न डोमेन के लिए किसी भिन्न डेटाबेस से कनेक्ट करना चाहते हैं तो आप डोमेन की पहचान करने के लिए इस कोड का उपयोग कर सकते हैं:
$this->getRequest()->getHost();
कार्रवाई . में डोमेन तक पहुंचने के लिए यह करें:
public function yourAction(Request $request, /* ... */)
{
// the Controller extends the Container. So need to get it here:
$connectionFactory = $this->get('doctrine.dbal.connection_factory');
// also access the domain like this:
$domain = $request->getHost();
}