mysql - 违反完整性约束 - 1452 无法添加或更新子行
问题描述
当我尝试将数据保存到中间表中时,我遇到了多对多关系的问题。基本上,客户有很多观察结果,而我有tbl_cients
、clients_hasmany_observations
和tbl_clients_observations
。
迁移中的外键:
Schema::connection('dev')->table('clients_hasMany_observations', function (Blueprint $table) {
$table->foreign('client_id')->references('client_id')->on('tbl_clients');
$table->foreign('observation_id')->references('observation_id')->on('tbl_clients_observations');
});
客户型号:
/**
* The observations that belong to the client.
*/
public function observations()
{
return $this->belongsToMany('App\ClientsObservations', 'clients_hasmany_observations', 'client_id', 'observation_id')->withTimestamps();
}
观察模型:
/**
* The observations that belong to the client.
*/
public function clients()
{
return $this->belongsToMany('App\Clients', 'clients_hasmany_observations', 'client_id', 'observation_id')->withTimestamps();
}
考虑到这一点,如果我尝试添加一个新客户端并附加一个虚拟观察,我会收到错误消息:
SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(
helderne_dev
。clients_hasmany_observations
,CONSTRAINTclients_hasmany_observations_observation_id_foreign
FOREIGN KEY(observation_id
)参考tbl_clients_observations
(observati) (SQL: insert into
clients_hasmany_observations(
client_id,
created_at,
observation_id,
updated_at`)值(4,2020-04-15 11 :05:09, 50, 2020-04-15 11:05:09))```
我真的不明白为什么,因为我添加了密钥。任何帮助将不胜感激!
编辑#1 在我正在写的控制器中:
$new_client = Clients::create($request->all());
$new_client->observations()->attach([50]);
dd($new_client);
50 将是 tbl_clients_observations 中观察的可能 ID。
解决方案
我知道这是旧的,但根据文档,“第三个参数是您定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称:
return $this->belongsToMany('App\Models\Role', 'role_user', 'user_id', 'role_id');"
所以我认为你可能在客户端功能上打开了外键。不确定它是否会解决所有问题,但请尝试切换它们:
public function clients()
{
return $this->belongsToMany('App\Clients', 'clients_hasmany_observations', 'observation_id', 'client_id')->withTimestamps();
}
推荐阅读
- python - Django 通过文件名运行测试
- amazon-web-services - 无法连接到 AWS RDS
- node.js - Playwright + Firefox:如何禁用下载提示并默认保存?
- c - GTK+ 应用程序在 Windows 10 上看起来坏了,但只是有时
- c - C VS VB 中的比较
- json - 使用 PowerShell 循环确定对象和/或 JSON 值的深度
- json - 无法在 Slim 框架上的 PHPUnit 中提交 JSON 请求
- segmentation-fault - 我简化了项目的一部分以解决我遇到的这个特定问题(大小为 4 的无效写入/分段错误)
- rust - 通过示例了解绝对和相对路径的 Rust 组件迭代器
- reactjs - 找不到模块:错误:运行故事书时无法解析“@emotion/styled/base”