laravel 5.4更改身份验证用户表名

时间:2017-06-09 03:59:31

标签: laravel authentication laravel-5.4

我目前正在我的应用程序中使用 laarvel5.4 身份验证;我想更改用户表名,同时保持其在身份验证逻辑中的角色,我只需要更改名称。

似乎Laravel在最新版本中更改了Auth文件和代码结构,因此auth.php看起来并不像以前的laravel版本那样。

到目前为止,我已经完成了以下操作,但它仍然无法正常工作,因为我发现错误表示用户不存在:

  • 1 - 我已更改迁移向上()向下()功能并删除员工表而不是用户并成功运行迁移。
  • 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',
    ];
}

2 个答案:

答案 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',
    ]);
}