1

我正在尝试构建多照片上传表单。我遵循了 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

4

1 回答 1

3
  • mappedBy 永远不是教义关系的拥有方。

  • ManyToOne 始终是拥有方和持有 JoinColumn 定义的一方

  • 您还可以添加级联持久化,以便在持久化项目并刷新时自动存储您的照片实体。

  • 此外,添加 fetch EAGER 选项以自动加载带有项目的图像。

如下实现这些添加 this use 语句:

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;
于 2013-05-25T20:14:49.227 回答