为了尝试跨bundle定义一对多关系,会发生以下情况:
The class ‘Mana\ClientBundle\Entity\Member’ was not found in the chain
configured namespaces Mana\SplitBundle\Entity
更新3:
我现在看到了相互矛盾的答案,即这种关系能够而且无法实现.假设它可以(因为stackoverflow中的其他人似乎已经完成了它),除了在AppKernel.php中注册bundle并在实体中输入注释之外,还需要什么配置? resolve_target_entity_listener似乎没有什么区别.
更新2:
好吧,我知道我已经超出了我的深度,但这是我在尝试显示客户端实体时单步执行代码时所观察到的.
探查器中的错误消息
The target entity ‘Mana\ClientBundle\Entity\Member’ specified on
Mana\SplitBundle\Entity\Client#members is unknown or not an entity.
因为SchemaValidator将$cmf-> isTransient($assoc [‘targetEntity’])评估为true而发生,其中成员实体中的targetEntity. PHPdoc注释表明未加载此实体的元数据.如果我理解正确,这意味着没有加载关于关系的注释.但观察变量值表明已经阅读了注释.
我完全错过了一些应该非常明显的东西吗?还是我离开了太远了?
更新1:
我已经确认了doctrine:mapping:info将检测不正确的FQCN.数据夹具是正确的.对默认和拆分连接使用实体管理器和数据库连接是正确的.错误仍然存在,并且可能发生在客户端实体(OneToMany或ManyToOne)中定义的任何关系中.
config.yml:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
enum: string
split:
driver: "%database_driver2%"
host: "%database_host2%"
port: "%database_port2%"
dbname: "%database_name2%"
user: "%database_user2%"
password: "%database_password2%"
charset: UTF8
mapping_types:
enum: string
entity_managers:
default:
connection: default
mappings:
ManaClientBundle: ~
split:
connection: split
mappings:
ManaSplitBundle: ~
客户实体:
/**
* @ORM\OneToMany(targetEntity="Mana\ClientBundle\Entity\Member", mappedBy="client")
* @ORM\OrderBy({"dob" = "ASC"})
*/
protected $members;
会员实体:
/**
* @ORM\ManyToOne(targetEntity="Mana\SplitBundle\Entity\Client",inversedBy="members",cascade={"remove", "persist"})
* @ORM\JoinColumn(name="cid", referencedColumnName="id")
*
*/
protected $client;
学说映射:
$php app/console doctrine:mapping:info
Found 12 mapped entities:
[OK] Mana\ClientBundle\Entity\Agency
[OK] Mana\ClientBundle\Entity\Center
[OK] Mana\ClientBundle\Entity\Contact
[OK] Mana\ClientBundle\Entity\Contactdesc
[OK] Mana\ClientBundle\Entity\Counties
[OK] Mana\ClientBundle\Entity\Ethnicity
[OK] Mana\ClientBundle\Entity\Incomehistory
[OK] Mana\ClientBundle\Entity\Incomesrc
[OK] Mana\ClientBundle\Entity\Member
[OK] Mana\ClientBundle\Entity\Note
[OK] Mana\ClientBundle\Entity\Referral
[OK] Mana\ClientBundle\Entity\User
$php app/console doctrine:mapping:info --em=split
Found 1 mapped entities:
[OK] Mana\SplitBundle\Entity\Client