Удаление дочерней коллекции из родительской

Я схожу с ума.

Это родитель:

class Parent {
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    protected $id;

    /**
     * @OneToMany(targetEntity="Core\Parent\Child", mappedBy="parent", cascade={"persist", "remove"})
     */
    protected $children;


    public function __construct() {
        $this->children = new \Doctrine\Common\Collections\ArrayCollection();
    }


    public function getChildren() {
        return $this->children->toArray();
    }

    public function removeAllChildren() {
        $this->children->clear();
    }

    public function addChild($child) {
        $this->children->add($child);
    }
}

Это ребенок:

class Child {
    /**
     * @Id
     * @GeneratedValue
     * @Column(type="integer")
     */
    protected $id;

    /**
     * @ManyToOne(targetEntity="Core\Parent", inversedBy="children")
     * @JoinColumn(name="parent_id", referencedColumnName="id")
     */
    protected $parent;
}

Что не работает для меня, так это удаление всех СУЩЕСТВУЮЩИХ дочерних элементов для этого родителя. С моего контроллера я делаю:

$parent = $em->getRepository('Core\Parent')->find(1);
$parent->removeAllChildren();

На этом этапе я могу вызвать getChildren () , и он пуст. Перед завершением моего скрипта я также выполняю: $ em-> flush ();

Однако я проверяю таблицы базы данных, и данные все еще там! Я не понимаю, и это сводит меня с ума. Как мне удалить всех существующих дочерних элементов для этого родительский?

6
задан Vic 16 January 2012 в 02:59
поделиться