php - 使用 laravel 迁移添加“更新时”和“删除时”外键约束
问题描述
我正在把我的桌子变成这样......
Schema::create('matched_merchants', function (Blueprint $table)
{
$table->increments('id')->unsigned();
$table->integer('merchant_id')->unsigned();
$table->integer('offer_id')->unsigned();
$table->foreign('merchant_id')->references('id')->on('merchants')->onUpdate('cascade')->onDelete('restrict');
$table->foreign('offer_id')->references('id')->on('offers')->onUpdate('cascade')->onDelete('restrict');
});
我添加 2 个外键都有 onUpdate 和 onDelete 约束,但只添加了更新约束。
如果我删除 onUpdate,它将正确添加 onDelete 约束。
我无法单独添加它们,因为我收到重复键的错误。
我可以使用原始 sql 语句手动添加它们,但如果有正确的方法来做它,我宁愿这样做。
解决方案
出于某种原因,如果将列设置为nullable()
,Laravel 会正确设置外键。
也就是说,我可以看到导致其他问题,所以我建议执行原始 SQL 语句。
推荐阅读
- python - 如何在 python 中将 30 维 numpy 数组保存到人类可读的 txt 文件中?
- deep-learning - 如何在 PyTorch 中通过约束最小化损失?
- javascript - React SyntaxHighlighter 仅在
堵塞
- java - 创建一个包含 .java 和 .class 文件的 jar 文件
- node.js - 如何设置不和谐机器人状态
- javascript - 同步javascript:设置输入值后如何继续脚本?
- c++ - 如何获取数组数据类型的大小
- postgresql - 如何向关系数据库表中添加额外的列?
- c - 为什么输出为 8883。代码是如何执行的?
- python - 检查页面上是否存在文本,但从变量中读取文本(Selenium)