我正在使用Laravel 4,以下代码存在一个错误,我无法找到它:(所以我需要你的帮助。
我的代码的一部分(给我错误)如下所示:
if($status == 'admin')
{
$role_id = 1;
}
else
{
$role_id = 2;
}
$check_role = DB::table('roles')->where('id', $role_id)->pluck('id');
if(($password == $repeat_password)&&($check_role != 0)&&($first_name != "")&&($last_name != ""))
{
$user = User::create(array('username' => $username, 'password' => Hash::make($password), 'first_name'=>$first_name, 'last_name' => $last_name, 'no_total_leaves' => $no_total_leaves, 'active' => $active, 'role_id' => $role_id));
return View::make('pages/manageUsers')->with('info', 'Success!');
}
else
{
return View::make('pages/manageUsers')->with('info','Failed!');
}
我想确保您角色表存在并且它有两行(id = 1是管理员,is=2是用户)。
将显示以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`leaves_db`.`users`, CONSTRAINT `users_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)) (SQL: insert into `users` (`username`, `password`, `first_name`, `last_name`, `no_total_leaves`, `active`, `updated_at`, `created_at`) values (demo .demo, y$BuTWHRpfPl.OztGhTltjteqvGZZ6xcbzlAnCgwrZYRxRDxB.fuqHe, demo , demo, 0, 1, 2015-01-12 11:35:55, 2015-01-12 11:35:55))
根据上面提到的代码,您没有在表 USERS 中插入列role_id的值。
请记住,表 USERS 中的列role_id是表 ROLES 上列 ID 的外键。因此,它应始终包含在您的每个插入语句中。
$user = User::create(array('username' => $username, 'password' => Hash::make($password), 'first_name'=>$first_name, 'last_name' => $last_name, 'no_total_leaves' => $no_total_leaves, 'active' => $active, 'role_id' => $role_id));
似乎正在运行的查询实际上并没有插入role_id。我在错误显示的查询中看不到它。
感谢您的支持。我需要改用这一行:DB::table('users')->insert(array('username' => $username, 'password' => Hash::make($password), 'first_name'=>$first_name, 'last_name' => $last_name, 'no_total_leaves' => $no_total_leaves, 'active' => $active, 'role_id' => $role_id));