如何检查用户电子邮件是否已存在

bal*_*erz 10 php laravel

在laravel中,当一个新用户注册到我的网站时,他们使用的电子邮件已存在于数据库中.怎么能告诉用户电子邮件已经存在?我是laravel框架的新手.示例代码也不错.

Ed *_*nds 37

Laravel内置的验证功能允许您检查许多内容,包括数据库中是否已存在值.这是您需要的过度简化版本.实际上,您可能希望使用表单重定向回视图并显示一些错误消息.

// Get the value from the form
$input['email'] = Input::get('email');

// Must not already exist in the `email` column of `users` table
$rules = array('email' => 'unique:users,email');

$validator = Validator::make($input, $rules);

if ($validator->fails()) {
    echo 'That email address is already registered. You sure you don\'t have an account?';
}
else {
    // Register the new user or whatever.
}
Run Code Online (Sandbox Code Playgroud)

);

Laravel具有内置的人类可读错误消息,可用于所有验证.您可以通过以下方式获取这些消息的数组:$validator->messages();

您可以在Laravel Docs中了解有关验证的更多信息以及您可以使用它做些什么.

  • 仅供参考,以供将来参考.如果在"users"之后有空格,"'required | unique:users,email'`则会导致SQL语句失败. (4认同)

小智 7

if(sizeof(Users::where('email','=',Input::get('email'))->get()) > 0) return 'Error : User email exists';
Run Code Online (Sandbox Code Playgroud)


Lok*_*oko 7

唯一规则的基本用法

'email' => 'unique:users'
Run Code Online (Sandbox Code Playgroud)

指定自定义列名称

'email' => 'unique:users,email_address'
Run Code Online (Sandbox Code Playgroud)

强制唯一规则忽略给定ID

'email' => 'unique:users,email_address,10'
Run Code Online (Sandbox Code Playgroud)

添加其他Where子句

您还可以指定将添加为查询的"where"子句的更多条件:

'email' => 'unique:users,email_address,NULL,id,account_id,1'
Run Code Online (Sandbox Code Playgroud)

以上内容来自Laravel的文档

你可以添加:

public static $rules = [
    'email' => 'unique:users,email'
];
Run Code Online (Sandbox Code Playgroud)

您可以在$规则中添加更多规则,例如:

public static $rules = [
        'email' => 'required|unique:users,email'
];
Run Code Online (Sandbox Code Playgroud)

它会自动生成错误消息

并添加:

public static function isValid($data)
{
    $validation = Validator::make($data, static::$rules);

    if ($validation->passes())
    {
        return true;
    }
    static::$errors = $validation->messages();
    return false;
}
Run Code Online (Sandbox Code Playgroud)

到模型User.php

然后在您用于注册的函数中,您可以添加:

if ( ! User::isValid(Input::all()))
{
    return Redirect::back()->withInput()->withErrors(User::$errors);
}
Run Code Online (Sandbox Code Playgroud)