Laravel 8 在 App/Model 中更改用户 table 的名称且受保护无效
Laravel 8 changing users table name in App/Model with protected not working
我安装了一个相对较新的 laravel 8 和 jetstream/fortify。我正在尝试使用与默认 'users'.
具有不同 table 名称的预先存在的用户 table
通过阅读,我认为我必须在 app\Model\User.php 中更新它。我做了如下操作:
class User extends Authenticatable
14 {
15 /**
16 .* My custom users table
17 .*/
18 protected $table = "user"; // note here it is user not users
19 protected $primaryKey = "user_id";
但是当我尝试注册新用户时,我收到 SQLSTATE 错误,指出 Base table 或未找到视图...."mydb.users" 不存在。
所以它仍在寻找 'users' 而不是 'user'。
还有什么地方需要更改?
文档似乎没有在其他任何地方提及,other 堆栈答案似乎表明这应该足够了
编辑:
这是我的config/auth.php部分
67
68 'providers' => [
69 . 'users' => [
70 . . 'driver' => 'eloquent',
71 . . 'model' => App\Models\User::class,
72 . ],
73
74 . // 'users' => [
75 . // 'driver' => 'database',
76 . // 'table' => 'users',
77 . // ],
78 ],
所以我相信我使用的是正确的用户提供商eloquent。
电子邮件唯一性的验证规则在其中硬编码了 table 名称(它发生在初始化任何模型之前,因此在某种程度上是有意义的)。
看起来像这样的东西
$validator = Validator::make($request->all(), [
'email' => 'email|unique:users', //<- notice here that the database table name is hardcoded
'password' => 'required',
]);
如果您使用的是默认验证器,则需要复制它并更改该行。
我安装了一个相对较新的 laravel 8 和 jetstream/fortify。我正在尝试使用与默认 'users'.
具有不同 table 名称的预先存在的用户 table通过阅读,我认为我必须在 app\Model\User.php 中更新它。我做了如下操作:
class User extends Authenticatable
14 {
15 /**
16 .* My custom users table
17 .*/
18 protected $table = "user"; // note here it is user not users
19 protected $primaryKey = "user_id";
但是当我尝试注册新用户时,我收到 SQLSTATE 错误,指出 Base table 或未找到视图...."mydb.users" 不存在。
所以它仍在寻找 'users' 而不是 'user'。
还有什么地方需要更改?
文档似乎没有在其他任何地方提及,other 堆栈答案似乎表明这应该足够了
编辑: 这是我的config/auth.php部分
67
68 'providers' => [
69 . 'users' => [
70 . . 'driver' => 'eloquent',
71 . . 'model' => App\Models\User::class,
72 . ],
73
74 . // 'users' => [
75 . // 'driver' => 'database',
76 . // 'table' => 'users',
77 . // ],
78 ],
所以我相信我使用的是正确的用户提供商eloquent。
电子邮件唯一性的验证规则在其中硬编码了 table 名称(它发生在初始化任何模型之前,因此在某种程度上是有意义的)。
看起来像这样的东西
$validator = Validator::make($request->all(), [
'email' => 'email|unique:users', //<- notice here that the database table name is hardcoded
'password' => 'required',
]);
如果您使用的是默认验证器,则需要复制它并更改该行。