我有一个实体,其中包含多张照片:
/**
* related images
* @ORM\OneToMany(targetEntity="Photo", mappedBy="entity",cascade={"persist"})
* @ORM\OrderBy({"uploaded_at" = "ASC"})
*/
private $photos;
照片与实体之间有多对一的关系
/**
* @ORM\ManyToOne(targetEntity="Acme\AppBundle\Entity\Entity", inversedBy="photos")
* @ORM\JoinColumn(name="entity_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $entity;
所有的setter和getter都已设置,我正在遵循Symfony集合文档:http://symfony.com/doc/current/reference/forms/types/collection.html
表单类型:
->add('photos', 'collection', array(
'type' => new PhotoFormType(),
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true
))
照片类型:
$builder
->add('title', null, ['label' => 'front.photo.title', 'required' => true])
->add('image', 'file', array('required' => false))
;
我使用vichUploadableBundle进行上传,图片保存正常,但entity_id未保存且为null。我不知道我错过了什么。
by_reference => false
这一行对我很有帮助! - DelphiLynx$photo->setEntity(null)
以在编辑时删除照片,并在实体类的照片注释中添加orphanRemoval=true
。 - ericksho