我的 Laravel 应用程序成功创建了迁移中的所有表,但无法在表中创建外键关系,甚至在删除主记录时无法强制级联。这是迁移。 Schema::create('articles', function (Blueprint $table) { $table->id('id'); $table->unsignedBigInteger('user_id'); $table->string('title'); $table->text('excerpt'); $table->text('body'); $table->timestamps(); $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); });当我运行时 php artisan migrate它迁移成功。λ php artisan migrateMigration table created successfully.Migrating: 2014_10_12_000000_create_users_tableMigrated: 2014_10_12_000000_create_users_table (0.11 seconds)Migrating: 2014_10_12_100000_create_password_resets_tableMigrated: 2014_10_12_100000_create_password_resets_table (0.1 seconds)Migrating: 2019_08_19_000000_create_failed_jobs_tableMigrated: 2019_08_19_000000_create_failed_jobs_table (0.07 seconds)Migrating: 2020_08_26_122846_create_articles_tableMigrated: 2020_08_26_122846_create_articles_table (0.14 seconds)但是,当我检查数据库时,没有创建关系,只是创建外键索引。 检查此链接中的文章表图像。我已经标记了必要的部分在此处检查用户表图像。我已经突出显示了主键。我添加了一些与用户和文章相关的工厂数据,当我删除用户时,这些文章将被保留为孤立的。可能出什么问题了?PHP 版本:7.3.21MySql版本:5.7.31MariaDB 版本:10.4.13Laravel 框架版本:7.25.0先感谢您。
2 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
我所做的就是转到config文件夹然后database.php将 mysql 数据库引擎从 null 更改为 innoDB 即来自:
//...
'engine' => null,
//...
到:
//...
'engine' => 'InnoDB',
//...
慕桂英546537
TA贡献1848条经验 获得超10个赞
您用于Schema::create创建表。
在 Laravel 文档中,我Schema::table在使用外键时看到。也许你应该尝试拆分你的代码:
Schema::create('articles', function (Blueprint $table) {
$table->id('id');
$table->unsignedBigInteger('user_id');
$table->string('title');
$table->text('excerpt');
$table->text('body');
$table->timestamps();
});
Schema::table('articles', function (Blueprint $table) {
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消