У меня есть таблица films
, которая содержит отношение «многие ко многим», например, AgeRatings
с сводной таблицей с именем film_age_rating
, которая содержит film_id
в качестве внешнего ключа. У меня это тоже есть с 3 другими отношениями.
В настоящее время мое приложение не имеет функции для отправки запроса на удаление, чтобы удалить фильм, поэтому сейчас я жестко удаляю строки в таблице БД films
. Когда я удаляю фильм из таблицы films
, он удаляет элементы, но данные в сводной таблице остаются неизменными, чего я не хочу.
films_table
public function up()
{
Schema::create('films', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('name')->nullable();
}
film_age_rating
public function up()
{
Schema::create('film_age_ratings', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('age_rating_id');
$table->uuid('film_id');
$table->timestamps();
});
}
Модель фильма
public function ageRatings(): BelongsToMany
{
return $this->belongsToMany(
AgeRatings::class,
'film_age_rating',
'film_id',
'age_rating_id'
);
}
Возрастной рейтинг Модель
public function film(): BelongsToMany
{
return $this->belongsToMany(
Film::class,
'film_age_rating',
'age_rating_id',
'film_id'
);
}
Я знаю, что можно добавить каскад onDelete
к сводным таблицам, но это потребует большого количества таблиц миграции. Есть ли другой способ решить эту проблему, не добавляя на данный момент запрос DELETE
, или каскад является единственным вариантом?
Не могли бы вы посоветовать мне наиболее эффективный вариант?