在本地和暂存(生产)上运行php artisan migrate
和php artisan migrate:rollback
时,以下架构构建器代码可以完美环境。这将运行alter table
语句来修改现有表。
注意:由于行为空,因此无需将nullable
或default value
设置为category_id
:
// up
$table->integer('category_id')->unsigned()->index();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
// down
$table->dropForeign('stores_category_id_foreign');
$table->dropColumn('category_id');
我使用:memory:
配置使用 SQLite 运行我的功能测试,并且当数据库回滚时我收到以下错误(感谢{{ 1}}特质)
DatabaseMigrations
为什么会发生这种情况,我是否需要在SQLite上配置一些我不知道的东西?
答案 0 :(得分:2)
默认情况下,SQLite禁用了外键支持。
您需要手动启用它或使用其他数据库。
Laravel 5.1: Enable SQLite foreign key constraints
上面的链接讨论了如何执行此操作,但基本上您需要找到一种方法在测试之前在功能测试环境中运行'PRAGMA foreign_keys = 1'。
免责声明:我只在Laravel 5上试过这个