Задать вопрос
@Seintero

Как правильно указать каскадное удаление?

У меня две сущности, Роли и Права со связью многие ко многим. Я хочу, чтобы при удалении Прав в JOIN таблице очищались правила, но не удалялись связанные роли из таблицы Roles... Но почему-то выходит либо:

а) При удалении прав, удаляются записи в таблице связей, но и удаляется связанная роль.
Вот аннотация из прав
/**
     * @ORM\ManyToMany(targetEntity="Role", inversedBy="permissions",  cascade={"remove"})
     * @ORM\JoinTable(name="permissions_role", joinColumns={@ORM\JoinColumn(name="permissions_id", referencedColumnName="id", unique=false,onDelete="CASCADE")}, inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id", unique=false, onDelete="CASCADE")})
     */
    private $roles;

А вот из ролей
/**
     * @ORM\ManyToMany(targetEntity="Permissions", mappedBy="roles",  cascade={"remove"})
     */
    private $permissions;


б) Если не указывать cascade={"remove"} , то удаляются права, не удаляются роли... но так же не удаляются связанные записи и при повторном заполнении возникают ошибки из-за дублей.

Возможно я какое-то дополнение к правилам упускаю? Кто-нибудь может подсказать?
  • Вопрос задан
  • 534 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Seintero Автор вопроса
Вопрос решила, надо было приравнивать к null
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы