Laravel 8 изменение имени таблицы пользователей в приложении / модели с защищенным не работает

У меня есть относительно свежая установка 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     ],     

Поэтому я считаю, что использую правильного поставщика услуг с красноречием.

Вы выполнили php artisan optimize:clear после обновления имени таблицы, я не думаю, что это необходимо, но просто догадка

MAY 02.04.2021 16:22

И выбран ли eloquent в качестве драйвера вашего пользовательского провайдера в конфигурации аутентификации?

MAY 02.04.2021 16:25

Вам также необходимо изменить имя таблицы при миграции таблицы пользователей.

Kaleem Shoukat 02.04.2021 16:33

проверьте эту ссылку: stackoverflow.com/questions/44449076/…

Kaleem Shoukat 02.04.2021 16:33

@MAY Да, я считаю, что в конфигурации аутентификации выбрано значение eloquent. И я попробовал оптимизировать: четкие, но все те же результаты. Я добавил в свою конфигурацию аутентификации выше.

Nertskull 02.04.2021 16:57

@KaleemShoukat Имя уже было изменено при миграции. Ссылка, которую вы предоставили, похоже, не говорит больше, чем использование защищенного поля в модели.

Nertskull 02.04.2021 17:01

происходит ли это во время проверки перед регистрацией пользователя, если да, то обновите правило проверки, чтобы оно соответствовало новой таблице при идентификации уникальных пользователей?

MAY 02.04.2021 17:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
7
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В правилах проверки уникальности электронной почты имя таблицы жестко запрограммировано (это происходит до инициализации любой модели, поэтому в этом случае это имеет смысл).

что-то вроде этого

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

Если вы используете валидатор по умолчанию, вам необходимо скопировать его и изменить эту строку.

Спасибо! Это было оно.

Nertskull 02.04.2021 18:10

Другие вопросы по теме