「親」によってマップされ、「子」によって反転されたエンティティ(ユーザー)に自己参照の1対多の関連付けがあります。親ではないユーザーを削除できるようにしたい。私の実体は次のように宣言されています。
class User implements UserInterface
{
/**
* @ORM\Column(name="id", type="smallint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
(...)
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="parent")
*/
protected $children;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
protected $parent;
public function __construct()
{
$this->parentId = null; // Default value for column parent_id
$this->children = new ArrayCollection();
}
}
親ではない子ユーザーを削除しようとすると、次のエラーが発生します。
例外'PDOException'とメッセージ'SQLSTATE[23000]:整合性制約違反:1451親行を削除または更新できません:外部キー制約が失敗します
次のように、カスケード削除を実行してみました。
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="parent", cascade={"persist", "remove"})
*/
protected $children;
どちらの方法でも同じエラーが発生します。何か助けはありますか?