Php symfony 3在不同的实体管理器中将一个实体映射到另一个实体
我得到了一个Symfony项目,它有两个数据库,因此有两个实体管理器和两个不同的包(AppBundle和CommonBUndle)。Config.yml如下所示:Php symfony 3在不同的实体管理器中将一个实体映射到另一个实体,php,symfony,Php,Symfony,我得到了一个Symfony项目,它有两个数据库,因此有两个实体管理器和两个不同的包(AppBundle和CommonBUndle)。Config.yml如下所示: orm: default_entity_manager: default auto_generate_proxy_classes: "%kernel.debug%" entity_managers: default: connection: default
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
auto_mapping: true
naming_strategy: doctrine.orm.naming_strategy.underscore
common:
connection: common_data
auto_mapping: false
mappings:
CommonBundle: ~
naming_strategy: doctrine.orm.naming_strategy.underscore
有两个实体:TestPhase(在AppBundle中)和IntentObject(在CommonBUndle中)
TestPhrase.php实体:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use CommonBundle\Entity\IntentSubject;
/**
* TestPhrase
*
* @ORM\Table(name="test_phrase", indexes={@ORM\Index(name="KJHWJELKFH", columns={"phraseset_id"})})
* @ORM\Entity
*/
class TestPhrase
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \CommonBundle\Entity\IntentSubject
*
* @ORM\ManyToOne(targetEntity="CommonBundle\Entity\IntentSubject")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="definedsubject", referencedColumnName="rowId")
* })
*/
private $definedsubject;
<?php
namespace CommonBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
/**
* IntentSubject
*
* @ORM\Table(name="Intent_subject", indexes={@ORM\Index(name="RGKJSDFHGSFG", columns={"Intent_id"})})
* @ORM\Entity
*/
class IntentSubject
{
/**
* @var integer
*
* @ORM\Column(name="row_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $rowId;
听起来好像您正试图跨实体管理器关联实体?那不行。实体经理是相互独立的。是的,这就是我试图做的。我可以写一个JOIN
语句并以这种方式映射数据吗?不太可能。您可以使用一个实体管理器,并在IntentObject中使用database_name.table_name,但这反过来会导致许多其他问题和限制。可能需要重新考虑你的方法。