php – 使用doctrine的symfony2动态数据库连接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 使用doctrine的symfony2动态数据库连接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1533字,纯文字阅读大概需要3分钟。
内容图文
![php – 使用doctrine的symfony2动态数据库连接](/upload/InfoBanner/zyjiaocheng/901/0b5d3d219975400ca24be57f5c0283f8.jpg)
我试图在Symfony 2中使用doctrine进行多个数据库连接但不能这样做.
我已经在谷歌和堆栈溢出中进行了广泛搜索,但无论在哪里,它都是通过config.yml文件或动态数据库完成的,其中所有数据库都具有相同的模式/实体.
但对于我的情况,数据库是基于子域确定的,并且所有子域的数据库架构都不相同.
例如:
test1.example.com =>应该加载test1 db
test2.example.com =>将加载test2 db
test1和test2 DB都是不同的,它们是在DB级别创建的,并且在doctrine中没有实体条目.
任何人都可以帮助我在Symfony 2中如何做到这一点.
解决方法:
在我看来,使用Doctrines ODM并不是解决这个问题的正确方法.您仍然可以使用Doctrine连接到数据库并查询它们.但是如果你没有实体类,那么使用实体管理器似乎是不合适的.
使用Doctrine进行连接处理
以下是使用doctrine 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();
}
内容总结
以上是互联网集市为您收集整理的php – 使用doctrine的symfony2动态数据库连接全部内容,希望文章能够帮你解决php – 使用doctrine的symfony2动态数据库连接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。