Реализация задания каскадного удаления в миграциях для полиморфных отношений
Наше Вам с кисточкой, уважаемые!
Вот реализация каскадного удаления связанных данных из зависимой таблицы:
class CreateCategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::create('categories', static function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('category_id')->nullable();
$table->string('name')->unique();
$table->timestamps();
$table->foreign('category_id', 'categories_ibfk_1')
->references('id')->on('categories')
->onUpdate('CASCADE')
->onDelete('CASCADE');
});
}
...
}
Как реализовать подобное в миграции с полиморфным отношением?
class CreateImagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::create('images', static function (Blueprint $table) {
$table->id();
$table->morphs('imageable');
$table->string('path');
$table->timestamps();
});
}
...
}
Ответы (1 шт):
Автор решения: Ivan Dudarev
→ Ссылка
Полиморфное отношение не создает связь в базе данных, поэтому ссылочную целостность обеспечивать нужно только кодом