Один вариант:
Управление каскадным удалением с помощью этого пакета:
Пакет для управления каскадным удалением
Второй вариант:
Вы можете прослушивать события, которые предоставляет Laravel
protected static function boot()
{
parent::boot();
// cause a delete of a poster to cascade
// to children so they are also deleted
static::deleting(function ($poster) {
$photos->photos->delete();
$poster->comments()->delete();
});
}
Третий вариант:
Когда вы используетеполиморфные отношения вы, вероятно, также используете это черта. В этом случае вы можете удалить отношения в методе загрузки признака, подключившись к событию удаления.
<?php namespace Company\Package\Traits;
/**
* This file is part of Package.
*
* @license MIT
* @package Company\Package
*/
use Illuminate\Support\Facades\Config;
trait ActionableTrait
{
/**
* Morph Many relation with Task.
*
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function actions()
{
return $this->morphMany(Config::get('crm.action'),'actionable');
}
protected static function bootActionableTrait()
{
self::deleting(function ($model) {
$model->actions()->delete();
});
}
}
Вариант четыре:
Простой код, Переопределить метод удаления на вашей модели. Если эта модель удалена, удалите другие связанные модели.
public function delete()
{
$res=parent::delete();
if($res==true)
{
$relations=$this->youRelation; // here get the relation data
// delete Here
}
}
прочитайте ее https://laravel.com/docs/5.8/eloquent-relationships#querying-polymorphic-relationships