Đối với tôi, có vẻ như sử dụng Doctrines ODM không phải là cách đúng đắn để tiếp cận điều này. Bạn vẫn có thể sử dụng Doctrine để kết nối với cơ sở dữ liệu và truy vấn chúng. Nhưng nếu bạn không có lớp thực thể nào thì việc sử dụng trình quản lý thực thể dường như không phù hợp.
Sử dụng Doctrine để xử lý kết nối
Đây là cách bạn tạo kết nối với Cơ sở dữ liệu bằng học thuyết Connection
lớp:
/** @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))
);
Bây giờ bạn có thể sử dụng $connection
như một PDO
đơn giản đối tượng:
$connection->executeQuery('SELECT * FROM your_table');
Bạn có thể thêm mã này làm dịch vụ để làm cho nó có thể truy cập được ở mọi nơi.
Nếu bạn muốn kết nối với một cơ sở dữ liệu khác cho một miền khác, bạn có thể sử dụng mã này để xác định miền:
$this->getRequest()->getHost();
Để truy cập miền trong một hành động làm điều này:
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();
}