首页 > 解决方案 > 如何在 Laravel 7 中使用另一个表进行身份验证

问题描述

我对 Laravel 很陌生,已经看过很多教程,所以现在我知道的很少。但我正在努力解决一个我无法解决的问题。我想使用我的数据库中已经存在的另一个表(t_clients)而不是迁移创建的用户表进行身份验证。我已经阅读了网站上的文档,所以我在 auth.php 中进行了更改:

    'providers' => [
//        'users' => [
//            'driver' => 'eloquent',
//            'model' => App\User::class,
//        ],
         'users' => [
             'driver' => 'database',
             'table' => 't_clients',
         ],
    ],

现在,当我尝试登录时,出现下一个错误:ErrorException Undefined index: id。所以我尝试了下一个,这个问题是临时解决的,我将表“t_clients”中的primary_key名称更改为“id”并且登录有效。原始列名是“pk_client”。但我实际上希望 primary_key 保持不变。我实际上希望通过身份验证,Laravel 搜索“pk_client”而不是“id”。有谁知道我该如何解决这个问题?我感谢您的帮助。

规范项目:Laravel Framework 7.1.0 mysql Ver 8.0.18

标签: authenticationlaravel-7

解决方案


This problem was fixed by making a Client EloquentModel and add de next lines:

protected $table = 't_clients';
protected $primaryKey = 'pk_client';

So the result should be:

class Client extends Authenticatable implements CanResetPassword
{
    protected $table = 't_clients';
    protected $primaryKey = 'pk_client';
    use Notifiable;
}

推荐阅读