fomvasss
@fomvasss
PHP developer

Как при удалении статьи удалить связанные поля таблицы картинок и далее соотв. файлы картинок?

В общем есть три таблицы с полями:
posts: id, name, created_at,...
imageables: imageable_id, imageable_type, file_id, title,...
files: id, name, path, type, is_used...

также настроенные foreign key когда удаляется файл (с таб. files) - удаляется поле с таблицы imageables

Каждая статья связанная с несколькими картинками (полиморфная связь), при этом каждая картинка связанная с одним файлом.

Нужно при удалении статьи, удалить все связанные модели картинок (в таблицы imageables) + для связанного файла (imageables) установить поле is_used = 0 (файл потом удалится, по крону например...)

Хочу чтобы при следующей команде все это делалось автоматом:
\Post::find(1)->fieldImages()->delete()
и не нужно было вообще следить за таблицей files
  • Вопрос задан
  • 247 просмотров
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
Внешние ключи тут никак не помогут. А помогут обсерверы.
Ответ написан
@HAJIOM
Ключами спокойно можно удалять по связям, а вот файлы - почитайте в документации https://laravel.com/docs/5.5/eloquent#observers это о событиях в моделях. Создайте наблюдателя, и в нем опишите удаление в файлов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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