У меня есть относительно свежая установка laravel 8 с jetstream / fortify. Я пытаюсь использовать уже существующую таблицу пользователей, имя которой отличается от имени таблицы по умолчанию «пользователи».
Читая вокруг, я подумал, что мне нужно просто обновить это в 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 не существует.
Так что он по-прежнему ищет «пользователей», а не «пользователь».
Где еще мне нужно это изменить?
В документации, похоже, больше нигде не упоминается, и ответы стека Другие, похоже, предполагают, что этого должно быть достаточно
Редактировать: Это моя часть 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 в качестве драйвера вашего пользовательского провайдера в конфигурации аутентификации?
Вам также необходимо изменить имя таблицы при миграции таблицы пользователей.
проверьте эту ссылку: stackoverflow.com/questions/44449076/…
@MAY Да, я считаю, что в конфигурации аутентификации выбрано значение eloquent. И я попробовал оптимизировать: четкие, но все те же результаты. Я добавил в свою конфигурацию аутентификации выше.
@KaleemShoukat Имя уже было изменено при миграции. Ссылка, которую вы предоставили, похоже, не говорит больше, чем использование защищенного поля в модели.
происходит ли это во время проверки перед регистрацией пользователя, если да, то обновите правило проверки, чтобы оно соответствовало новой таблице при идентификации уникальных пользователей?






В правилах проверки уникальности электронной почты имя таблицы жестко запрограммировано (это происходит до инициализации любой модели, поэтому в этом случае это имеет смысл).
что-то вроде этого
$validator = Validator::make($request->all(), [
'email' => 'email|unique:users', //<- notice here that the database table name is hardcoded
'password' => 'required',
]);
Если вы используете валидатор по умолчанию, вам необходимо скопировать его и изменить эту строку.
Спасибо! Это было оно.
Вы выполнили
php artisan optimize:clearпосле обновления имени таблицы, я не думаю, что это необходимо, но просто догадка