我究竟做错了什么?
环境:
Laravel 6、Homestead(本地)、Windows 10
创建外部表(迁移):
Schema::create('external', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->foreign('id')->references('order_id')->on('order');
});
创建订单表(迁移):
Schema::create('order', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('order_id')->index();
外部.php(模型):
class External extends Model
public function orders()
{
return $this->hasMany(Order::class);
}
}
Order.php(模型):
public function external()
{
return $this->belongsTo(External::class);
}
错误信息:
SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败(homestead
.external
, 约束external_id_foreign
外键(id
) 参考order
(order_id
)) (SQL: 插入external
(site_order_id
, order_status
,...
该错误是一种常见错误,并且很容易解释。您的 Laravel 代码正在生成一个(或多个)插入,该插入引用了order
不存在的表。尝试运行以下查询:
SELECT o.*
FROM [order] o
WHERE order_id = <external.id value here>
如果您返回一个空结果集,则意味着您的插入引用了中的数据order
这是不存在的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)