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
  • mappingBy は教義関係の所有側ではありません。

  • ManyToOne は常に所有側であり、JoinColumn 定義を保持する側です

  • カスケード永続化を追加して、アイテムが永続化されてフラッシュされたときに Photo エンティティが自動的に保存されるようにすることもできます。

  • さらに、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 に答える