将用户重定向到注册页面,错误消息用户已存在。
我不能将验证用作类型电子邮件,因为我在创建代码中手动添加组织名称@ organization.com,我阻止用户输入@ organization-name.com。目前验证只检查电子邮件值是否已填写。因此,我需要在create方法中使用一些策略来查明电子邮件是否存在,并在此处采取适当的操作重定向错误或重定向到登录页面,说明用户存在
public function create(array $data)
{
$firstname = Input::get('firstname');
$lastname = Input::get('lastname');
$username = Input::get('email');
$email = $username."@hw.ac.uk";
//I need to do a check if this new user exists or not.
//If not go to Login page saying message user exists.
$digits = 5;
$new_code = rand(pow(10, $digits-1), pow(10, $digits)-1);
$user = new User;
$user->firstname = $firstname;
$user->lastname = $lastname;
$user->email = $email;
$pswd = bcrypt(Input::get('password'));
$user->password = $pswd;
}
}
but when I register new user for the first time and re-register the same user with all different info but same email address. I get this error:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'test@gmail.com' for key 'users_email_unique' (SQL: insert into `users` (...))
I know its a duplicate entry but I want to redirect user to login page and tell that user already exists with this email. How do I do that?
我用过这个:
$existing = User::select('email')->where('email',$email)->pluck('email');
if($existing[0] == $email){
return Redirect()->back()->withErrors('User already exists');
}else{
//continue
}
但是我得到了会话保护错误。
答案 0 :(得分:2)
您获得的例外情况是添加具有相同电子邮件的新用户(根据您的迁移,该用户是唯一的)。在创建user
之前,您可以先检查它是否已存在。
$user = User::where('email', '=', 'user_email')->first();
if($user == null)
{
//Add new user
}else {
return redirect()->route('someroute');
}