问题描述
我有一个相对较新的带有 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 堆栈答案似乎表明这应该足够了
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',]);
如果您使用的是默认验证器,那么您需要复制它并更改该行。