我目前正在我的应用程序中使用 laarvel5.4 身份验证;我想更改用户表名,同时保持其在身份验证逻辑中的角色,我只需要更改名称。
似乎Laravel在最新版本中更改了Auth文件和代码结构,因此auth.php看起来并不像以前的laravel版本那样。
到目前为止,我已经完成了以下操作,但它仍然无法正常工作,因为我发现错误表示用户不存在:
2 - 我更改了 RegisterController 中的验证器()功能。
3 - 我已在 config / auth.php中将所有'用户'更改为'staff' ,如代码所示:
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'staff',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'staff',
],
'api' => [
'driver' => 'token',
'provider' => 'staff',
],
],
'providers' => [
'staff' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'staff' => [
// 'driver' => 'database',
// 'table' => 'staff',
// ],
],
'passwords' => [
'staff' => [
'provider' => 'staff',
'table' => 'password_resets',
'expire' => 60,
],
],
];
但是,在 app / User.php 中我不知道要改变什么,因为在以前的版本中曾经有一个 table 变量需要更改它的价值从用户到新的表名,但在我的班级我没有这样的东西
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
答案 0 :(得分:11)
您可以在迁移file中更改表名,然后在User.php模型中更改表名变量。
示例:
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_flights';
}
https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions
答案 1 :(得分:7)
你需要在两个地方改变
1.在隐藏app / User.php数组
后添加此行 protected $hidden = [
'password', 'remember_token',
];
protected $table = 'another_table_name';
2.在RegisterController中,在验证器方法中更改表名:
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:another_table_name',
'password' => 'required|string|min:6|confirmed',
]);
}