2016-09-15 120 views
3

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

我已经尝试更改供应商部分中的config/auth.php文件,但是当我将'model' => App\User::class,更改为'model' => App\Company::class,时,它开始登录,但不管电子邮件和密码输入是否完全错误。有任何想法吗?

编辑:Company注册并且登录后,有权邀请Users的能力,因此原来的User表必须保持

+0

删除默认的用户表,并创建一个自定义的,不会那么辛苦了。 –

+0

@Iftikharuddin请参阅我的编辑请 –

回答

7

Laravel 5.3已在验证实现更改。对我而言,这样解决了这个问题:

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

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

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

创建用于扩展验证的应用程序文件夹中的公司类,所以要用:

use Illuminate\Foundation\Auth\User as Authenticatable; 

在公司类,定义可填写和隐藏字段。

class Company extends Authenticatable { 

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

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

在RegisterController.php变化 “使用App \用户”

use App\Company; 

调整创建验证功能在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', 
    ]); 
} 

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

希望这有助于!

1

不要忘记在registerContoller中更改验证。

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

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