无法使用Laravel框架创建用户

时间:2015-01-12 11:29:52

标签: php laravel laravel-4

我正在使用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是admin,而is = 2是user)。

显示以下错误:

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))

3 个答案:

答案 0 :(得分:1)

按照上面提到的代码,您不会在表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));

答案 1 :(得分:0)

似乎正在运行的查询实际上并没有插入role_id。我在错误显示的查询中看不到它。

答案 2 :(得分:0)

感谢您的支持。我需要使用此行代替: 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));