我有 2 列具有一對一關系users,并且doctors:
Users
_____________
| id | name |
|____|______|
| 1 | John |
|____|______|
Doctors
_____________________
| id | dep | user_id |
|____|_____|_________|
| 1 | 2 | 1 |
|____|_____|_________|
User模型具有回傳具有關系的醫生的功能:
public function doctor(){
return $this->hasOne(Doctor::class);
}
插入資料:
$valdiated = $request->validated();
$userData = [
'name' => $valdiated['name'],
];
$doctorData = [
'dep' => $valdiated['dep'],
];
$newUser = new User();
$newUser->insert($userData);
$newUser->doctor()->insert($doctorData);
但我收到了這個錯誤:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`db`.`doctors`, CONSTRAINT `doctors_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into `doctors` (`dep`) values (2))
有沒有辦法將它插入user_id到doctors表中,或者我必須查詢資料庫并獲取最后一個 id?
uj5u.com熱心網友回復:
您應該使用create()而不是,insert因為它將回傳Model您剛剛創建的新實體。然后您將使用doctor()來創建一個關聯到醫生表。
$newUser = User::create($userData);
$newDoctor = $newUser->doctor()->create($doctorData);
dd($newUser,$newDoctor); //Just to check if the data is inserted.
uj5u.com熱心網友回復:
我認為問題在于使用->insert(); 它不會在關聯的模型上執行任何型別的鏈接邏輯,因此user_id將是null,因為它不存在于$doctorData.
您可以->create()改用:
$newUser = User::create($userData);
$newUser->doctor()->create($doctorData);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520817.html
