Мягкое удаление вложенных дочерних элементов

У меня есть модель под названием «Model_Announcement», которая расширяет Model_Soft, и другую модель под названием «Model_Announcement_Comment», которая расширяет Model_Nestedset.

Отношения между ними таковы: Model_Announcement:

protected static $_has_many = array(
  'comments' => array(
   'key_from' => 'id',
   'model_to' => 'Model_Announcement_Comment',
   'key_to' => 'announcement_id',
   'cascade_save' => true,
   'cascade_delete' => true,
  ),
);

Model_Announcement_Comment:

protected static $_belongs_to = array('user', 'announcement');

Создание комментария работает нормально, но удаление объявления вызывает ошибку «Orm \ RelationNotSoft», поскольку комментарии к объявлениям относятся к вложенной модели, а не к программной.

Есть идеи, как это сделать?

заранее спасибо

Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
0
0
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Model_Announcement_Comment также должен расширять Model_Soft (нетModel_Nestedset), чтобы это работало. Об этом говорится в документации.

The delete function will soft delete related models providing that cascade_delete is true. If the related model is not soft delete as well then a RelationNotSoft exception is thrown.

https://fuelphp.com/docs/packages/orm/model/soft.html#/relations

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