【问题标题】:Integrity constraint violation: 1452 Cannot add or update a child row laravel 6完整性约束违规:1452 无法添加或更新子行 laravel 6
【发布时间】:2020-10-10 17:50:50
【问题描述】:

我有一个用户与 belongsTo hasMany 之间有关系,这意味着用户生活在一个状态中,当我想添加一个用户时它给了我错误:

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(ʻaswak.ʻusers,CONSTRAINT ʻusers_city_id_foreign FOREIGN KEY (city_id) REFERENCES ʻusers(ʻid ) ON DELETE CASCADE) (SQL: insert into ʻusers ( name ,'email , 密码,电话, 回到名单Daten , COUNTRY_ID , STATE_ID , ʻautrei city_id,'Autreh , ʻadressem,'adresser , ʻimage,'images , ʻupdated_atcreated_at)值​​(achraf khazzou, achraf.khazzou@gmail.com, $ 2y $ 10 $ g5qibjlVJqMOlhriu5s / TuS8UIoYEVOYFPHBM4UVa, 0626341177, 1988-06-22, 1, 4?, 7?, hay tihit tinghir, hay tihit tinghir, 简介\10月20日\ == eyJpdiI6IjJPRVdIUlFcL3VFZm5uM2syK3kra0pBPT0iLCJ2YWx1ZSI6Ik0zZysyY2FIKzZHMWIxZ1hCdnljM2NhZ0lhSllGblBmaXlNUXNcL1NJZDFVPSIsIm1hYyI6IjZkMzBlODdlNjYwNjBiMWRlYmM2MTkxZmMwMDlkNzFjY2NlYjEzOWJiOTg1ZDViMzg2MDZlZDQxY2EwZWNlMjkifQ。JPEG,[“型材October2020 \ \ eyJpdiI6IkFlQmljZlFta2RzeFlaZXhGOTZxRWc9PSIsInZhbHVlIjoiQUlPajV6YkZJd1ZHem90ZGdNT3U1dzFlblV MMT J6QStIbFwvRE1oYTM5eElBdW1RN0dkcW1xV3RoZWZtXC9MU1lkIiwibWFjIjoiY2YyYzBjMTQ3Zjg1OTcyNjQ1OWY1YjI5MWY4MjBkOTBmZDM3ZWQyMmMyOTQ1ZTg4YjgwMzg0ZjIzMmIwZmFjZiJ9.jpeg “” 简档\ \ October2020 eyJpdiI6IjZnUWVVNEZmR0dHckowV1Erdmlwd0E9PSIsInZhbHVlIjoiaWdWblYwOG93dlhJVldnaTNDdERjXC9DYmVLUVFxUE9OVlBvWHRyVFdTZWRkVnlwWHkwUXhSeGJGb1BlZmFzSmUiLCJtYWMiOiJkMjlmMGQ4OGIwY2IwYTE0ZDZhNWQ1MzM1YzY5YWRhOWUwNmYwNjNkZmU2ZDhmM2QxMGU1ZTY2YzdlNmQwZTM0In0 = .JPEG“] 2020年10月10日下午5点32分58秒,2020年10月10日5点32分58秒P.M。))。 P>

状态表

城市表

有时它给我错误 CONSTRAINT users_city_id_foreign 和有时 CONSTRAINT users_state_id_foreign,知道表格 states 和 city 是由 states 和 city 折叠的

用户.php

public function country() { 
    return $this->belongsTo('App\Country'); 
}

public function state() { 
    return $this->belongsTo('App\State');  
}

public function city() { 
    return $this->belongsTo('App\City'); 
}

City.php

public function users(){
    return $this->hasMany('App\User'); 
}  

State.php

public function users(){
    return $this->hasMany('App\User');
} 

用户表

$table->bigInteger('country_id')->unsigned()->nullable();
$table->foreign('country_id')->references('id') 
          ->on('users')->onDelete('cascade');
$table->bigInteger('city_id')->unsigned()->nullable();
$table->foreign('city_id')->references('id') 
          ->on('users')->onDelete('cascade');
$table->string('autreh')->nullable();
$table->bigInteger('state_id')->unsigned()->nullable();
$table->foreign('state_id')->references('id') 
          ->on('users')->onDelete('cascade');

【问题讨论】:

  • use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。

标签: php laravel foreign-keys


【解决方案1】:

您的外键引用错误。您在外键声明中引用父表的键,而不是表本身。更改您的迁移文件

$table->bigInteger('country_id')->unsigned()->nullable();
$table->foreign('country_id')->references('id') 
          ->on('countries')->onDelete('cascade');
$table->bigInteger('city_id')->unsigned()->nullable();
$table->foreign('city_id')->references('id') 
          ->on('cities')->onDelete('cascade');
$table->string('autreh')->nullable();
$table->bigInteger('state_id')->unsigned()->nullable();
$table->foreign('state_id')->references('id') 
          ->on('states')->onDelete('cascade');

我已经假设了您的表名,如果需要,请根据您的更改。再次迁移,这将起作用。

【讨论】:

  • 谢谢你的回答,但它给了我错误1215 Impossible d'ajouter des contraintes d'index externe (SQL: alter table users add constraint users_country_id_fo reign foreign key (country_id) references countries (id) on delete cascade)
  • 上一次迁移中已经存在同名的索引。你必须删除那些
猜你喜欢
  • 2020-01-23
  • 2023-03-23
  • 2017-04-26
  • 1970-01-01
  • 2016-05-31
  • 2016-08-12
  • 2020-02-17
  • 2020-08-13
相关资源
最近更新 更多