Symfony 2 Collection Field返回“spl_object_hash()期望参数1为对象,给定数组”

时间:2013-05-25 20:06:37

标签: symfony symfony-forms

我正在尝试构建一个多照片上传表单。我按照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

1 个答案:

答案 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;