这就是我想要做的事情:
namespace BundleTwo\Controller;
use BundleOne\Entity\TestEntity;
class TestController
{
public function pageAction()
{
$insert = new TestEntity();
$insert->fieldName('test');
$em = $this->getDoctrine()->getManager('dbcon2');
$em->persist($insert);
$em->flush();
}
}
...所以上面的代码在Bundle 2中,它使用了Bundle 1中的Entity - 但它需要使用DB connection2。
我可以使用这个http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html来设置两个数据库连接,我可以看到如何定义一个包使用哪个EM,但我希望一个包有2个连接。
我认为上面的代码可行,但是当我运行app / console doctrine:schema:update --em = dbcon2时,它不会填充数据库中的任何内容,也不会检测到任何实体。我想我需要知道Bundle 2和DB 2也使用BundleOne \ Entity \ TestEntity。
如果我可以在BundleTwo中设置设置用于BundleOne \ Entity \ TestEntity的数据库连接的设置,那么可能会这样做。
答案 0 :(得分:3)
您可以使用mapping
属性
doctrine:
orm:
default_entity_manager: dbcon1
entity_managers:
dbcon1:
connection: dbcon1
mappings:
BundleOne: ~
dbcon2:
connection: dbcon2
mappings:
BundleOne: ~
答案 1 :(得分:0)
正如您所推测的那样,您必须告诉每个实体经理在查找实体时要使用哪些捆绑包。
类似的东西:
orm:
default_entity_manager: default
auto_generate_proxy_classes: %kernel.debug%
#auto_mapping: true
entity_managers:
default:
connection: default
mappings:
games:
connection: games
mappings:
CeradGameBundle: ~
accounts:
connection: accounts
mappings:
FOSUserBundle: ~
CeradAccountBundle: ~
所以你的dbcon2会列出bundle 1和bundle 2。如果这个答案没有用,那么请更新你的问题并显示你的学说orm配置。