Доктрина каскада Монго удаляет детей, когда ребенок является собственником

У меня есть ссылка OneToMany родитель / ребенок:

/**
 * @ODM\Document
 */
class Parent
{
    // ...

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     * @ODM\ReferenceMany(targetDocument="Child", mappedBy="parent")
     */
    protected $children;

    // ...
}



/**
 * @ODM\Document
 */
class Child
{

    // ...

    /**
     * @var Parent
     * @ODM\ReferenceOne(targetDocument="Parent", inversedBy="children", orphanRemoval=true)
     */
    protected $parent;

    // ...

}

То, что я хочу, - это когда родитель удаляется, все его дети также должны быть удалены. Я попытался cascade={"remove"} и orphanRemoval=true в родительской аннотации, но, похоже, это не работает.

Мне было интересно, если есть возможность сделать это автоматически, без необходимости писать LifeCycleEventListener.

Спасибо

1 ответ

Решение

А в родительском классе?

class Parent
{
    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     * @ODM\ReferenceMany(targetDocument="Child", mappedBy="parent", cascade={"remove"})
     */
    protected $children;

    // ...
}

В моем проекте cascade={'remove'} работает отлично, но это аннотация в родительском классе, а не в дочернем, как я вижу в вашем посте.

Другие вопросы по тегам