如何在 Laravel 7 中使用另一个 table 进行身份验证
How can I use another table for authentication in Laravel 7
我是 Laravel 的新手,已经看过很多教程,所以现在我知道的不多了。但我正在为一个我无法解决的问题而苦苦挣扎。我想使用我的数据库中已经存在的另一个 table(t_clients) 而不是迁移创建的用户 table 进行身份验证。我已经阅读了网站上的文档,所以我在 auth.php 中更改为:
'providers' => [
// 'users' => [
// 'driver' => 'eloquent',
// 'model' => App\User::class,
// ],
'users' => [
'driver' => 'database',
'table' => 't_clients',
],
],
现在,当我尝试登录时,出现下一个错误:ErrorException Undefined index: id
。所以我尝试了下一个,这个问题是临时解决的,我将 table "t_clients" 中的 primary_key 名称更改为 "id" 并且登录有效。原来的列名是"pk_client"。但我实际上希望 primary_key 保持不变。我实际上希望通过身份验证,Laravel 搜索 "pk_client" 而不是 "id"。有谁知道我该如何解决这个问题?我感谢您的帮助。
具体项目:
Laravel 框架 7.1.0
mysql 版本 8.0.18
此问题已通过创建客户端 EloquentModel 并添加下一行来解决:
protected $table = 't_clients';
protected $primaryKey = 'pk_client';
所以结果应该是:
class Client extends Authenticatable implements CanResetPassword
{
protected $table = 't_clients';
protected $primaryKey = 'pk_client';
use Notifiable;
}
我是 Laravel 的新手,已经看过很多教程,所以现在我知道的不多了。但我正在为一个我无法解决的问题而苦苦挣扎。我想使用我的数据库中已经存在的另一个 table(t_clients) 而不是迁移创建的用户 table 进行身份验证。我已经阅读了网站上的文档,所以我在 auth.php 中更改为:
'providers' => [
// 'users' => [
// 'driver' => 'eloquent',
// 'model' => App\User::class,
// ],
'users' => [
'driver' => 'database',
'table' => 't_clients',
],
],
现在,当我尝试登录时,出现下一个错误:ErrorException Undefined index: id
。所以我尝试了下一个,这个问题是临时解决的,我将 table "t_clients" 中的 primary_key 名称更改为 "id" 并且登录有效。原来的列名是"pk_client"。但我实际上希望 primary_key 保持不变。我实际上希望通过身份验证,Laravel 搜索 "pk_client" 而不是 "id"。有谁知道我该如何解决这个问题?我感谢您的帮助。
具体项目: Laravel 框架 7.1.0 mysql 版本 8.0.18
此问题已通过创建客户端 EloquentModel 并添加下一行来解决:
protected $table = 't_clients';
protected $primaryKey = 'pk_client';
所以结果应该是:
class Client extends Authenticatable implements CanResetPassword
{
protected $table = 't_clients';
protected $primaryKey = 'pk_client';
use Notifiable;
}