2015-12-30 5 views
11

Я следовал zizac/Доверьте установки учебник от GitHub Link и столкнулись с ошибкой:Как исправить в laravel 5.2 zizaco доверять: проверка имени класса миграции?

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

MigrationCommand.php файл URL: Link

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. Как это исправить?

ответ

40

в поставщика/zizaco/Доверьте/SRC/команды /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'); 

и конфигурация/auth.php поставщик записи файла строка, как, как я:

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
     'table' => 'users', 
    ], 

    // 'users' => [ 
    //  'driver' => 'database', 
    //  'table' => 'users', 
    // ], 
], 

тогда ваша проблема будет решить: счастливого кодирование

+1

Это сработало для меня, а не для принятого ответа ! –

+0

Это решит проблему. Я нахожусь на Laravel 5.2 и использую multi auth. Это работает как шарм! Спасибо – Nizam

+0

Большое спасибо за ваш ответ. Он отлично работает с laravel 5.2. Это должно быть отмечено как правильный ответ. :-) –

2

Try работает:

php artisan config:cache 

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

EDIT

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

$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

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

+0

Спасибо, все та же проблема. Я думаю, проблема связана с файлом config/auth.php. – Noproblem

+0

Не могли бы вы показать свой файл 'User.php'? Он должен быть в пространстве имен «App» –

+0

link: https://github.com/laravel/laravel/blob/master/app/User.php – Noproblem

5

В вендоре/zizaco/доверьте /src/commands/MigrationCommand.php на линии 86.

Laravel 5,1. * Add Line

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

Laravel 5,2. * Add Line

$usersTable = Config::get('auth.providers.users.table'); 
$userModel = Config::get('auth.providers.users.model'); 
+1

Хотя этот код может ответить на вопрос, было бы лучше включить какой-то контекст, объяснить, как он работает и когда его использовать. Ответы только на код не полезны в долгосрочной перспективе. – Bono

3

Принятый ответ может решить эту проблему, но это очень плохая практика, чтобы изменить прямые файлы поставщик.Ниже будет исправлена ​​проблема, которая может возникнуть у вас и будет поддерживать ваше приложение, все еще работающее, если вы решите обновить 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', 

После Доверьте выкатывается обновления вы можете удалить это или сохранить его. Вам решать.

+1

работает в laravel 5.4 – Cocuba