Итак, у меня есть три модели: Сообщение , Страница и Изображение . Сообщение и страница могут использовать одно и то же изображение или иметь свои собственные изображения.
Когда я удаляю сообщение, я хочу удалить все изображения, связанные с этим сообщением, но только в том случае, если эти изображения отмечены примечаниями, относящимися к чему-либо еще. Например, если в сообщении есть изображение, но оно также передается на страницу, сообщение не должно удалять это изображение в каскаде.
Вот мои модели:
Сообщение
class Post extends Model
{
public function images(){
return $this->morphToMany('App\Image', 'imageable');
}
}
Страница
class Page extends Model
{
public function images(){
return $this->morphToMany('App\Image', 'imageable');
}
}
Изображение
class Image extends Model
{
public function post()
{
return $this->morphedByMany('App\SocialPost', 'imageable');
}
public function pages()
{
return $this->morphedByMany('App\SocialPublication', 'imageable');
}
}
Обычно, я бы просто сделал $ post-> images () -> delete (), но сначала мне нужно проверить, принадлежит ли какое-либо из этих изображений другой модели.