使用Symfony / Doctrine临时连接到外部数据库

时间:2010-09-27 21:09:27

标签: symfony1 doctrine

要点:

我希望能够针对外部数据库运行查询,以便在用户登录时获取所需的数据。我不希望此网站使用外部任何其他内容数据库。从长远来看,它可能需要能够推送数据,但具体来说,我不希望symfony尝试为外部数据库构建架构,它应该不管它并且不时允许连接。 / p>

详细说明:

我正在尝试创建与另一个symfony应用程序的数据库的临时连接,我似乎无法弄清楚如何做到这一点。

我有一个已设置并运行的现有symfony站点。我正在尝试为这个主站点的用户创建一种管理系统。管理系统将为每个选择加入它的用户进行单独部署,因此它也将拥有与之关联的自己的数据库。但是,此管理系统需要从主站点系统访问2或3个表。

我已经尝试在管理系统中的databases.yml中添加单独的条目来创建与两个数据库的连接,但是每当我构建所有数据库时,它都希望将我的模式放在两个数据库中。

我想出的最好的想法是在管理系统的所有表中放置连接:管理,并在主站点的所有表中放置连接:main_site。但是,这需要我在管理系统和主站点上维护yml文件,以确保它们保持最新状态。

我希望这一点有点清楚。

感谢您的帮助:D

1 个答案:

答案 0 :(得分:5)

对于无法在远程站点上使用DQL的临时连接,只需通过Doctrine_Manager打开连接:

$conn = Doctrine_Manager::getInstance()->openConnection('mysql://username:password@localhost/database', 'connection 2', false);

确保第3个参数为false,以便它不会成为当前连接。然后,您可以使用PDO在连接上运行查询:

$conn->exec('SELECT * FROM table WHERE conditon = ?', array('value'));

如果您希望能够使用DQL和远程模式,则必须按照您概述的方式执行此操作:定义两个连接并在两个位置维护模式(您的版本控制应该能够处理此问题)