php - Laravel 8 在 protected 应用程序/模型中更改用户表名称不起作用

标签 php laravel laravel-fortify

我使用 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 错误,指出未找到基表或 View ...“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     ],     

所以我相信我正在使用正确的用户提供者,而且很有说服力。

最佳答案

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

看起来像这样的东西

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

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

关于php - Laravel 8 在 protected 应用程序/模型中更改用户表名称不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66919934/

相关文章:

php - 为什么 PHP 中的查询内部查询比 2 个查询慢?

php - 在 Windows 上安装 Composer 时出现 SSL 错误

php - SQLSTATE[22007] : Invalid datetime format: 1366 Incorrect integer value

php - Laravel PayPal 支付返回 400

php - Laravel本地化,重定向到右 View

java - 这种 Java 加密方法的等效 PHP 解密是什么?

php - 如何覆盖 laravel fortify Controller

laravel - Fortify - 如何自定义验证/密码重置电子邮件?

laravel - 如何将 Spatie 的 laravel 权限与 JetStream 正确集成?

php - Swift:从服务器响应中获取 HTTP 代码