我正在尝试构建一个多照片上传表单。我按照http://symfony.com/doc/current/reference/forms/types/collection.html指南进行了操作。但是,当我尝试坚持时,我收到此错误
Warning: spl_object_hash() expects parameter 1 to be object, array given in
C:\htdocs\smileflame\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php line 1367
可以请某人检查我做错了吗?这是我的完整代码:https://gist.github.com/dextervip/5650548
答案 0 :(得分:3)
mappedBy绝不是学说关系的拥有者。
ManyToOne始终是拥有JoinColumn定义的拥有方和侧面
您还可以添加级联持久性,以便在项目持续存在且您齐平时自动存储您的照片实体。
此外,添加fetch EAGER选项以使用Item自动加载Image。
实现以下内容添加此用法语句:
use Doctrine/Common/Collections/Collection
将属性名称更改为照片并更改注释:
项目(拥有方)
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="\BX\AppBundle\Entity\Photo", mappedBy="item", cascade={"persist","remove"}, fetch="EAGER")
*/
protected $photos;
public function getPhotos()
{
return $this->photos;
}
public function addPhoto(PhotoInterface $photo)
{
if (!$this->photos->contains($photo)) {
$this->photos->add($photo);
}
return $this;
}
public function setPhotos(Collection $photos)
{
$this->photos = $photos;
return $this;
}
照片(反面)
/**
* @ManyToOne(targetEntity=""\BX\AppBundle\Entity\Item" inversedBy="photos")
* @JoinColumn(name="item", referencedColumnName="id_item")
*/
protected $item;