Doctrine2:与1个实体的双重关系

时间:2013-08-06 14:28:31

标签: orm doctrine-orm annotations

我有2个实体:Album和AlbumImages。我做了这样的注释:

Entity\Album 
    /**
     *
     * @var Collection
     * 
     * @ORM\OneToMany(targetEntity="AlbumImages", mappedBy="album", cascade={"persist", "remove", "merge"}, orphanRemoval=true)
     */
    protected $images;

Entity\AlbumImages
    /**
     *
     * @var Album $album
     * 
     * @ORM\ManyToOne(targetEntity="Album", inversedBy="images")
     */
    protected $album;

它按预期工作。每张专辑都有一系列图片。如果我删除相册,则也会删除所有图像。

现在我尝试在专辑中添加小册子。封面可以是相册图像之一。 注释看起来像这样:

Entity\Album
    /**
     * @var Image $image
     *
     * @ORM\OneToOne(targetEntity="AlbumImages")
     * @ORM\JoinColumn(name="image_id", referencedColumnName="id")
     */
protected $thumb;

因此,专辑现在有封面(Entity \ AlbumImages),它可以正常使用,除了删除专辑。

我收到以下错误:

An exception occurred while executing 'DELETE FROM album WHERE id = ?' with params [3]:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`fs2`.`album_images`, CONSTRAINT `FK_326483DD1137ABCF` FOREIGN KEY (`album_id`) REFERENCES `album` (`id`))

你能指出我在哪里做错了吗?

0 个答案:

没有答案