我在Symfony 2.8上。在我的Work
实体中,我得到了:
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\WorkClaim", mappedBy="claimedWork", cascade={"persist"})
*/
private $claims;
/**
* @param WorkClaim $claim
*/
public function addClaim(WorkClaim $claim)
{
$claim->setClaimedWork($this);
$this->claims->add($claim);
}
/**
* @param WorkClaim $claim
*/
public function removeClaim(WorkClaim $claim) { /* to be done */ }
(和构造函数中的getter / setter,当然还有$this->claims = new ArrayCollection();
)
在我的WorkClaim
实体中:
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Work", inversedBy="claims")
*/
private $claimedWork;
(和getter / setter)
我的WorkType
类在表单构建器中有这个:
->add('claims', CollectionType::class, array(
'entry_type' => WorkClaimType::class,
'allow_add' => true,
'by_reference' => false,
))
WorkClaimType
只有一些典型字段(EntityType
可选择国家/地区,两个DateType
字段和NumberType
)。
无论我做什么,都会调用addClaim()
,但新的WorkClaim
实体会添加NULL claimed_work_id
。我错过了什么?
我是否真的必须在WorkClaim
的{{1}}控制器中单独保留每个Work
?如果是这样,如何正确迭代它们?尝试在表单数据上调用createAction()
不会给我任何记录。