我已经完成了其他框架的编程,但这对我来说是新的,感谢您在高级时间,我正在尝试创建新用户,条件是如果另一个表中有数据则创建新用户,否则不会我把我的代码放在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;
}
}
}
答案 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创建新用户。