gpt4 book ai didi

php - 违反完整性约束 : 1452 Cannot add or update a child row in Laravel 5. 2

转载 作者:行者123 更新时间:2023-11-29 07:19:21 24 4
gpt4 key购买 nike

当我尝试插入角色时出现错误。我在StackOverFlow中找到了此问题的一些解决方案,但所有这些都不能解决我的问题。

我正在尝试将idroles表获取到user_roles表的roleID列。我在这里使用 Query Builder Laravel 5.2。

public function store(Request $request)
{
//
$role = [];
$role['role'] = $request->input('role');

$data= Role::create($role);
$id= $data->id;
DB::table('user_roles')->insert([
'roleID' => $id
]);
//return $data;
return redirect(route('allRole'));
}

当我插入任何角色时,它会在 roles 表中插入新数据,但我没有在 user_roles 表中获取 roleID。我得到一个错误:

 SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or
update a child row: a foreign key constraint fails
(`amarjobs`.`user_roles`, CONSTRAINT `fkuserRolesuserID` FOREIGN KEY
(`userID`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE
CASCADE) (SQL: insert into `user_roles` (`roleID`) values (14))

我做的问题出在哪里?先谢谢了。搜索结果:

1. First Solution. 2. Second Solution.

最佳答案

正如您所看到的,您的 user_roles 表需要 userID 列,并且您在插入时没有传递该字段,这就是生成错误的原因。

DB::table('user_roles')->insert([
'roleID' => $id,
'userID' => $userId, //pass your userID here
]);

另外,我想提一下您以驼峰式大小写命名数据库表列名称的几件事,这很糟糕,您应该使用下划线,并且因为数据库 sql 通常不区分大小写,因此使用 userID 是等效的到用户ID

此外,您正在使用DB::insert,它不会插入任何created_atupdated_at字段或其他 Eloquent 功能,所以我建议您插入使用 eloquent 模型 和使用关系,这是 Laravel 和 eloquent 事件记录的美妙之处

尝试这样

public function store(Request $request)
{
//
$role = [];
$role['role'] = $request->input('role');

$data= Role::create($role);
$userdata = User::all();
$user_id = $userdata->first()->id;
$id= $data->id;
DB::table('permissions')->insert([
'role_id' => $id
]);
DB::table('user_roles')->insert([
'roleID' => $id,
'userID' => $user_id
]);
//return $data;
return redirect(route('allRole'));
}

这里$userdata = User::all();您正在选择您希望所有用户都拥有此角色的所有用户,然后您必须循环遍历并插入它。或者,如果您希望第一个用户拥有此角色,那么也可以。

此外,我建议您应该阅读更多内容 Laravels文档来清除事情。

关于php - 违反完整性约束 : 1452 Cannot add or update a child row in Laravel 5. 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com