1

Album と AlbumImages の 2 つのエンティティがあります。次のような注釈を付けました。

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;

期待どおりに動作します。各アルバムには画像のコレクションがあります。アルバムを削除すると、すべての画像も削除されます。

ここで、cove をアルバムに追加してみます。カバーは、アルバム画像の 1 つにすることができます。注釈は次のようになりました。

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`))

私が間違っているところを教えてもらえますか?

4

0 に答える 0