chelkaz
@chelkaz

Почему не удаляется связанная запись в таблице?

Есть есть 3 таблицы:
pictures, sections и catalogs
Модель catalog связана belongsTo с pictures и hasMany с sections
То есть логично, что каталог может иметь фото и много разделов.
Разделы в свою очередь так же могут иметь фото и модель разделов так же связана с фото belongsTo
и еще раздел принадлежит каталогу, поэтому что бы узнать какому я добавил в модель разделов и belongsTo к каталогу.
Но проблема с удалением, я в события по документации в AppServiceProvider добавил для разделов:
Section::deleting(function ($section) {
            $section->pictures()->delete();
        });

И при удалении разделов удаляется и фото, все работает верно.
Но вот если я удаляю каталог, то нужно что бы фото каталога, разделы и фото разделов удалились, которые связаны с этим каталогом. Я сделал так:
В AppServiceProvider добавил
public function boot()
    {
        // Удаляем фото при удалении раздела
        Section::deleting(function ($section) {
            $section->pictures()->delete();
        });
       // Удаляем каталог и его фото и разделы и фото разделов при удалении каталога
        Catalog::deleting(function ($catalog) {
            $catalog->pictures()->delete();
            $catalog->sections()->delete();
        });
    }

Но в итоге фото разделов остаются в таблице при удалении каталога... Что я не так делаю, и вообще логика верна?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kirill-93
При правильной настроке отношений, записи в AppServiceProvider не нужны. Все связанные записи удаляются автоматически.
У каталога должно быть hasMany отношение к картинкам, ведь картинки принадлежат каталогу.
Ответ написан
Ваш ответ на вопрос

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

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