Laravel 5.3在Auth中更改用户表

时间:2016-09-15 14:48:13

标签: laravel laravel-5

我使用Laravel 5.3并使用make:auth artisan命令来构建登录/注册系统。我作为公司登录,所以我有一个名为Company的表。如何更改原始sql以从Company表而不是User表中获取电子邮件和密码?

我已尝试更改提供程序部分中的config/auth.php文件,但当我将'model' => App\User::class,更改为'model' => App\Company::class,时,它开始登录,但无论是否输入了电子邮件和密码完全错了。有什么想法吗?

编辑:在Company注册并登录后,它可以邀请Users,因此原始User表必须保留

2 个答案:

答案 0 :(得分:9)

Laravel 5.3对Auth实现进行了更改。对我来说,这种方式解决了它:

首先,在数据库中提供一个公司表,该表满足用于识别的标准。因此,它需要名称,电子邮件,密码和remember_token列。可以找到详细信息here

在config / auth.php中,将用户模型更改为公司类。

    'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Company::class,
    ],

在扩展Auth的App文件夹中创建一个Company类,因此请使用:

use Illuminate\Foundation\Auth\User as Authenticatable;

在公司课程中,定义可填写和隐藏字段。

class Company extends Authenticatable {

protected $fillable = [
    'name', 'email', 'password',
];

protected $hidden = [
    'password', 'remember_token',
];
}

在RegisterController.php中更改"使用App \ User"到

use App\Company;

使用Company :: create

调整RegisterController.php中的创建验证器功能
protected function create(array $data)
{
    return Company::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:companies',
        'password' => 'required|min:6|confirmed',
    ]);
}

'电子邮件' => '需要|电子邮件|最高:255 |独特:公司'
 (公司模型的表名将是公司)

希望这有帮助!

答案 1 :(得分:2)

请勿忘记更改REGISTERCONTOLLER.PHP中的验证。

'email' => 'required|email|max:255|unique:users',

'email' => 'required|email|max:255|unique:company',