Подтвердить что ты не робот

Учение 2 OneToMany Cascade SET NULL

Ошибка

Не удается удалить или обновить родительскую строку: ограничение внешнего ключа завершается с ошибкой.

Классы

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. Я хочу сохранить публикацию, но без ссылки на профессора.

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

4b9b3361

Ответ 1

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

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

Ура!