我有一个表'user_temps',其中包含新用户,直到他们确认订阅为止。完成后,我将用户复制到“用户”表。
在注册表格中我有这个验证参数:
'email' => 'required|email|max:255|unique:user_temps|unique:users',
问题在于我需要有两条不同的消息: 如果用户在'user_temps'表中,而另一个用户在'users'表中。
谢谢
答案 0 :(得分:1)
您可以设置自定义验证消息
$rules = array(
'email' => 'required|email|max:255|unique:user_temps|unique:users'
);
$messages = array(
'email.required' => 'Email is required',
'email.email' => 'Email need to be email type',
'email.unique:user_temps' => 'This email is already exists in user temps table',
'email.unique:users' => 'This email is already exists in users table',
);
$validator = Validator::make(Input::all(), $rules, $messages);
答案 1 :(得分:1)
在尝试了一些不好的解决方案之后,某人(坦克你的小伙伴)在另一个地方给了我答案:
我为临时用户
定义了自己的验证器public function validateTempUserEmail($attribute, $value, $parameters)
{
return UserTemp::where($attribute, $value)->count() == 0;
}
现在验证电子邮件的规则是
'email' => 'required|email|max:255|TempUserEmail|unique:users',
答案 2 :(得分:0)
为简化起见,请不要执行以下操作:
在您用户的表格中,有一个名为'订阅的布尔列'默认为0.然后,当他们确认订阅时,您可以将其设置为1?
然后,在authentication后,您可以执行此检查:
if (Auth::attempt(['email' => $email, 'password' => $password, 'subscription' => 1]))
{
// The user is active, subscribed and exists.
}