Laravel 5.3在Auth中更改用户表

Ada*_*lva 4 laravel laravel-5

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

我已经尝试过在改变config/auth.php在供应商的部分文件,但是当我换'model' => App\User::class,'model' => App\Company::class,,它也开始登录,但无论如何,如果电子邮件地址和密码输入是完全错误的.有任何想法吗?

编辑:Company注册并登录后,它具有邀请功能Users,因此原始User表必须保留

小智 9

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

首先,在数据库中提供满足用于识别的标准的公司表.因此,它需要名称,电子邮件,密码和remember_token列.细节可以在这里找到.

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

    'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Company::class,
    ],
Run Code Online (Sandbox Code Playgroud)

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

use Illuminate\Foundation\Auth\User as Authenticatable;
Run Code Online (Sandbox Code Playgroud)

在Company类中,定义可填写和隐藏字段.

class Company extends Authenticatable {

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

protected $hidden = [
    'password', 'remember_token',
];
}
Run Code Online (Sandbox Code Playgroud)

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

use App\Company;
Run Code Online (Sandbox Code Playgroud)

使用Company :: create 调整RegisterController.php中的createvalidator函数

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',
    ]);
}
Run Code Online (Sandbox Code Playgroud)

'email'=>'required | email | max:255 | unique:companies '
(公司模型的表名将是公司)

希望这可以帮助!