Как исправить в laravel 5.2 zizaco доверять: проверка имени класса миграции?
Я следил за zizac/поручением установки учебника от GitHub Ссылка и столкнулся с ошибкой:
Имя класса должно быть допустимым объектом или строкой в вар/WWW/HTML/laravel_test/поставщика/zizaco//доверить SRC/команды/MigrationCommand.php on line 86
URL-адрес файла MigrationCommand.php: Ссылка
Outut:
php artisan entrust:migration
Tables: roles, role_user, permissions, permission_role
A migration that creates 'roles', 'role_user', 'permissions', 'permission_role' tables will be created in database/migrations directory
Proceed with the migration creation? [Yes|no] (yes/no) [yes]: yes
Creating migration...
PHP Fatal error: Class name must be a valid object or a string in /var/www/html/laravel_test/vendor/zizaco/entrust/src/commands/MigrationCommand.php on line 86
команда: поставщик php artisan: публикация прошла успешно.
Файл: config/entrust.php существует.
Я не изменял никаких параметров в файле config/auth.php, как - auth.php. Как это исправить?
Ответы
Ответ 1
в поставщике /zizaco/entrust/src/commands/MigrationCommand.php в строке 86
удалить строку:
$usersTable = Config::get('auth.table');
$userModel = Config::get('auth.model');
добавить строку:
$usersTable = Config::get('auth.providers.users.table');
$userModel = Config::get('auth.providers.users.model');
и config/auth.php напишите строку поставщика, как я:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'table' => 'users',
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
тогда ваша проблема решит: счастливое кодирование
Ответ 2
В поставщике /zizaco/entrust/src/commands/MigrationCommand.php в строке 86.
Laravel 5.1. * Добавить строку
$usersTable = Config::get('auth.table');
$userModel = Config::get('auth.model');
Laravel 5.2. * Добавить строку
$usersTable = Config::get('auth.providers.users.table');
$userModel = Config::get('auth.providers.users.model');
Ответ 3
Принятый ответ может решить проблему, но очень плохой практикой является редактирование файлов прямого поставщика. Ниже будет исправлена проблема, которая может возникнуть у вас и будет поддерживать ваше приложение, все еще работающее, если вы решите обновить Entrust и исправить свою кодовую базу.
Добавьте следующие строки в config/auth.php под:
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
Laravel 5.1 - 5.4
'model' => \App\Models\User::class,
'table' => 'users',
Как только Entrust выдает обновление, вы можете удалить его или сохранить. До вас.
Ответ 4
Попробуйте запустить:
php artisan config:cache
чтобы убедиться, что ваше приложение использует свежие файлы конфигурации
ИЗМЕНИТЬ
Хорошо, теперь я вижу, эта библиотека хочет использовать:
$usersTable = Config::get('auth.table');
$userModel = Config::get('auth.model');
но в auth
больше ничего подобного нет.
Итак, как временное обходное решение, вы должны probaby добавить table
и model
в auth
файл следующим образом: https://github.com/laravel/laravel/blob/5.1/config/auth.php
и подождите, пока Entrust не будет обновлен, чтобы удалить этот