无法使用Laravel框架创建用户


Cant create a user using Laravel framework

我正在使用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));