私は5つのエンティティを持っています:
- ユーザー、
- 人、
- UserAffiliation、
- PersonAffiliationおよび
- 所属
スキーマは次のとおりです。
いくつかの詳細:
WebUserは、Webサイトに登録されている人です。Webユーザーごとに、個人IDがあります。
人は、Webユーザー、作成者などになります。
各WebUserには0以上の所属があります。これらのアフィリエーションは、このWebUserによって作成され、有効なUserAffiliationsにリンクされています。
WebUserは、自分が作成したアフィリエーションを個人にリンクすることもでき(その個人が作成者の場合)、エンティティPersonAffiliationにデータが入力されます。
私は今、ウェブユーザーに著者(人)に所属を割り当てる可能性を与えようとしています。そのために、私は持っています:
エンティティパーソン
@ORM\OneToMany(targetEntity="PersonAffiliation", mappedBy="person", cascade={"persist", "remove"}) protected $affiliations;
PersonAffiliationで
@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)にリンクできません。
これを解決する方法、またはおそらく良いチュートリアルについてのアイデアがありますか?