如果数据库-Laravel中有数据,如何创建新用户

时间:2018-01-27 13:14:38

标签: laravel

我已经完成了其他框架的编程,但这对我来说是新的,感谢您在高级时间,我正在尝试创建新用户,条件是如果另一个表中有数据则创建新用户,否则不会我把我的代码放在if语句中并抛出错误。

我创建新用户的功能如下:

    protected function create(array $data)
    {
        /*$exists = \DB::table('received_pay')->where('email', $data['email'])->first();  */
          $exists=\DB::table('received_pay')->where('email', '=', $data['email'])->where('token', $data['token'])->exists();


if ($exists === null) {
   // user doesn't exist



        return User::create([
            'username' => $data['username'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'token'   => $data['token'],
        ]);

}else{
    return null;
}

}

}

this is the error it throws

1 个答案:

答案 0 :(得分:1)

默认情况下,您需要从User方法返回RegisterController@create个实例,但您无法返回null。因此,请执行此操作而不是return null;

return User::where('email', $data['email'])->first();

如果它是检查用户是否存在于users表中的选项,则可以使用firstOrCreate方法:

protected function create(array $data)
{
    return User::firstOrCreate(['email' => $data['email'], [
        'username' => $data['username'],
        'password' => bcrypt($data['password']),
        'token' => $data['token'],
    ]);
}

此外,如果您想要检查received_pay表中是否存在用户,您可以保留原始RegisterController@create方法并将此规则添加到RegisterController@validator方法中:

'email' => 'unique:received_pay,email',

如果received_pay表中已存在具有相同电子邮件的用户,则不允许Laravel创建新用户。