私はSymfony2 Frameworkに2つのバンドルを持っています: ユーザエンティティを持つ「MainBundle」とIssue Tracking System用のすべてのものを含む「TicketBundle」。このケースでは、エンティティ "プール"と "Mappingpooluser"だけが重要です。 私は2つの異なるデータベースを使用しなければならないので、両方とも異なるエンティティ・マネージャを使用します。Symfony2でEntity Managerをエンティティにバインドするには?
:今、私はMainBundleの1エンティティ(ユーザー)と1つのエンティティTicketBundleの(プール)(およびいくつかの重要でないもの)を必要とするエンティティ(Mappingpooluser)を持っているdoctrine:
dbal:
default_connection: default
connections:
default:
[driver, host etc.]
dbname: m_symfony
ticket:
[driver, host etc.]
dbname: m_ticketbundle
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
XXXMainBundle: ~
ticket:
connection: ticket
mappings:
XXXTicketBundle: ~
XXXMainBundle: ~
(以下私のconfig.ymlを参照してください)この時点で、すべてティル
/**
* XXX\TicketBundle\Entity\Mappingpooluser
*
* @ORM\Table(name="MappingPoolUser")
* @ORM\Entity(repositoryClass="XXX\TicketBundle\Repository\MappingPoolUserRepository")
*/
class Mappingpooluser
{
/**
* @var integer $poolid
*
* @ORM\OneToOne(targetEntity="Pool")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $pool;
/**
* @var integer $userid
*
* @ORM\OneToOne(targetEntity="XXX\MainBundle\Entity\User")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $user;
[getter/setter and this stuff]
が正常に動作します:) 私は$を呼び出すと、私は
$em = $this->getDoctrine()->getEntityManager("ticket");
$entities = $em->getRepository('XXXTicketBundle:Mappingpooluser')->findAll();
を介してコントローラにMappingpooluserエンティティを取得することができますエンティティ[0] - > getPoo私は$ entities [0] - > getUser() - > getId()を呼び出すと、プールの正しいIDを取得します(プールはMappingpooluserのような同じバンドルにあります)私はエラーを受け取ります:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'm_ticketbundle.User' doesn't exist
これは、ユーザーテーブルが他のDB(m_symfony)にあるので、正しく終了します。
Long Story、short Question:Symfony2にプールのチケットエンティティマネージャーとユーザーのデフォルトエンティティマネージャーを使用させるにはどうすればよいですか?
ありがとう、完璧に動作します。私の一日を保存:) –