Как исправить в laravel 5.2 zizaco entrust: проверка имени класса миграции?

Я следовал учебнику по установке zizac / entrust от GitHub Ссылка на сайт и столкнулся с ошибкой:

Имя класса должно быть допустимым объектом или строкой в
вар / WWW / HTML / laravel_test / поставщика / zizaco / / доверить SRC / команды / MigrationCommand.php
на линии 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 ремесленник продавец: опубликовать Был успешен.

Файл: config / entrust.php существует.

Я не изменил никаких параметров в файле config / auth.php так же, как — auth.php. Как это исправить?

11

Решение

в вендоре / 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',
// ],
],

тогда твоя проблема решится: happy coding

40

Другие решения

В вендоре / 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');
5

Принятый ответ может решить проблему, но редактировать файлы прямых поставщиков очень плохая практика. Следующее исправит проблему, которая может у вас возникнуть, и будет поддерживать ваше приложение, все еще работающее, если вы решите обновить Entrust и они исправят свою кодовую базу.

Добавьте следующие строки в конфиг / 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's 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 выпустит обновление, вы можете удалить его или сохранить. Вам решать.

3

Попробуйте запустить:

php artisan config:cache

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

РЕДАКТИРОВАТЬ

Хорошо, теперь я вижу, эта библиотека хочет использовать:

  $usersTable  = Config::get('auth.table');
$userModel   = Config::get('auth.model');

но в этом нет ничего подобного auth больше

В качестве временного решения вы должны добавить пробабы. table а также model в auth файл вроде так: https://github.com/laravel/laravel/blob/5.1/config/auth.php

и подождите, пока Entrust будет обновлен, чтобы удалить это

2
По вопросам рекламы [email protected]