Как при удалении статьи удалить связанные поля таблицы картинок и далее соотв. файлы картинок?
В общем есть три таблицы с полями: 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
Vasyl Fomin дорогой пользователь, настоятельно рекомендуем еще раз обратить самое пристальное внимание на п. 3.1 регламента работы сервиса (и, в особенности, на его последний абзац).
В противном случае, ваши вопросы будут удаляться по причине тег-спама.
Спасибо. Буду использовать обсерверы: при удалении статьи буду удалять записи картинки.
Но вот еще возник следующий вопрос, просто ради интереса: если, например, удаляю много картинок таким способом: \Post::find(1)->images()->delete()
то мы как бы не работаем с моделью одной сущности Image, и соотв. если бы был обсервер для события deleted сущности Image, он бы не срабатывал... как тогда фиксировать событие коллекции?
Vasyl Fomin, в приведённом коде вы вообще не работаете с моделью Image, а не «как бы». И коллекции тут ни при чём. Это билдер.
Поможет что-то типа \Post::find(1)->images->each->delete(), читать тут.
Ключами спокойно можно удалять по связям, а вот файлы - почитайте в документации https://laravel.com/docs/5.5/eloquent#observers это о событиях в моделях. Создайте наблюдателя, и в нем опишите удаление в файлов.
файлы не буду удалять сразу же, просто в таблице файлов будет поле, что он не используется и может быть удален. Удалятся, может быть будут по крону, или еще как-то, это пока не важно.
А за обсерверы спасибо. Ранее знал о событиях моделей, но как то обсерверы пропустил