我有 5 个实体:
- 用户,
- 人,
- 用户从属关系,
- 个人从属关系和
- 联系
这是架构:
一些细节:
WebUser 是在网站上注册的人。对于每个 Webuser,都有一个个人 ID。
一个人可以是网络用户、作者等。
每个 WebUser 有 0 个或多个从属关系。这些从属关系是由这个 WebUser 创建的,并链接到有能力的 UserAffiliations 中。
WebUser 还可以将他创建的从属关系链接到一个人(如果该人是作者),并且将填充实体 PersonAffiliation。
我现在正试图让网络用户有可能将隶属关系分配给作者(人)。为此,我有:
在实体人
@ORM\OneToMany(targetEntity="PersonAffiliation", mappedBy="person", cascade={"persist", "remove"}) protected $affiliations;
在个人从属关系中
@ORM\ManyToOne(targetEntity="Person", inversedBy="affiliations") @ORM\JoinColumn(name="person_id", referencedColumnName="id") protected $person; @ORM\ManyToOne(targetEntity="Affiliation", inversedBy="person_affiliations") @ORM\JoinColumn(name="affiliation_id", referencedColumnName="id") protected $affiliation;
在实体用户中:
@ORM\OneToMany(targetEntity="UserAffiliation", mappedBy="user") protected $affiliations; @ORM\ManyToOne(targetEntity="Person") @ORM\JoinColumn(name="person_id", referencedColumnName="id") protected $person;
在实体 UserAffiliation
@ORM\ManyToOne(targetEntity="User", inversedBy="affiliations") @ORM\JoinColumn(name="user_id", referencedColumnName="id") protected $user; @ORM\ManyToOne(targetEntity="Affiliation", inversedBy="user_affiliations") @ORM\JoinColumn(name="affiliation_id", referencedColumnName="id") protected $affiliation;
在表格中,我正在执行以下操作:
$builder->add('affiliations', 'entity', array(
'class' => 'SciForumVersion2Bundle:PersonAffiliation',
'query_builder' => function($em) use ($person){
return $em->createQueryBuilder('pa')->where('pa.person_id = :id')->setParameter('id', $person->getId());
},
'property' => 'affiliation',
'multiple' => true,
'expanded' => true,
));
但这一切都没有像我想的那样正常工作。
说明:当我尝试添加新的从属关系时,它只是为 WebUser 添加,我无法通过表单将其链接到作者(Person)。
你有关于如何解决这个问题的想法,或者可能有一个好的教程吗?