Doctrine 2 OneToMany Cascade SET NULL - PullRequest
       28

Doctrine 2 OneToMany Cascade SET NULL

54 голосов
/ 14 января 2012

Ошибка

Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено.

Занятия

class Teacher {

    /**
     *@ORM\OneToMany(targetEntity="publication", mappedBy="teacher")
     */
    protected $publications;
}

class Publication {

    /**
     * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications")
     * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id")
     */
    protected $teacher;
}

хочу

Я хочу сделать так, чтобы при удалении учителя id_teacher изменялся на NULL. Я хочу сохранить публикацию, но без ссылки на профессора.

Я не знаю, как это сделать в Учении, возможно ли это? Или всегда отношения должны быть с учителем?

1 Ответ

163 голосов
/ 27 июля 2012

Вы должны добавить опцию onDelete="SET NULL" в аннотации вашей сущности. Публикация выглядит так:

class Publication
{
    /**
    * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications")
    * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id", onDelete="SET NULL")
    */
    protected $teacher;
}

Ура! * * 1005

...