Laravel 8 在应用程序/模型中更改用户表名称,受保护不起作用

问题描述

我有一个相对较新的带有 jetstream/fortify 的 laravel 8。我正在尝试使用一个预先存在的用户表,该表的表名与认的“用户”不同。

通过阅读,我认为我必须在 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 错误,指出找不到基表或视图....“mydb.users”不存在。

所以它仍然在寻找“用户”而不是“用户”。

我还需要在哪里更改此设置?

文档似乎没有提到其他任何地方,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。

解决方法

电子邮件唯一性的验证规则将表名硬编码在其中(它发生在初始化任何模型之前,因此在某种程度上是有意义的)。

看起来像这样的东西

$validator = Validator::make($request->all(),[
    'email' => 'email|unique:users',//<- notice here that the database table name is hardcoded
    'password' => 'required',]);

如果您使用的是默认验证器,那么您需要复制它并更改该行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...