2014-01-23 7 views
1

Я использую Plymorphic отношения и ON DELETE CASCADE вариант mysql, и я боюсь, как мои данные будут оставаться постоянными с течением времени. Поясню:Laravel 4.0 каскадное удаление и полиморфные отношения

Если у меня есть модель номер, который содержит мебели нескольких типов (morphMany из Table, Chair, Couch ...), и я решил удалить его, его родственные мебель не будут удалены.

Чтобы решить эту Issure я обработал исключение соответствующих мебели в удаления события из Room модели, но это событие не обязательно уволят все время.

Предположим, что у меня есть другая модель под названием House, содержащая несколько комнат (hasMany). Если я решит удалить его, связанные с ним модели будут удалены mysql с опцией ON DELETE CASCADE. Затем я останусь с данными в своих таблицах tables, chairs, couchs, которые больше не актуальны и больше не связаны ни с одной строкой таблицы rooms.

Итак, что является лучшим способом сохранить базу данных в соответствии с ON DELETE CASCADE и полиморфными отношениями Eloquent?

ответ

2

Если вы используете метод необработанной базы данных (каскадный), который обходит Eloquent, и становится невозможным делать то, что вы хотите.

Настройте удаленное событие для дома, которое выполняет итерацию через все его комнаты и удаляет те, которые снова активируют удаленные события комнаты.

+0

Так что, если я понимаю, что вы говорите, способность помещать каскадное удаление в миграции не должна использоваться на самом деле никогда, так как все удаления должны обрабатываться только Eloquent. Я прав ? – alxscms

+0

Иногда каскадирование работает нормально, но если вам нужна более сложная логика при удалении (как и в вашем случае), используйте модельные события. – Andreas

Смежные вопросы