12

我已经按照 GitHub Link的 zizac/entrust 安装教程进行操作,但遇到了错误:

类名必须是第 86 行 var/www/html/laravel_test/vendor/zizaco/entrust/src/commands/MigrationCommand.php 中的有效对象或字符串

MigrationCommand.php 文件网址:链接

输出:

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 vendor:publish成功。

文件:config/entrust.php 存在。

我没有将任何选项更改为与 - auth.php相同的 config/auth.php 文件。如何解决?

4

4 回答 4

40

在第 86 行的 vendor/zizaco/entrust/src/commands/MigrationCommand.php 中

删除线:

    $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',
    // ],
],

那么你的问题就会解决:快乐编码

于 2016-01-05T16:01:42.563 回答
5

在第 86 行的 vendor/zizaco/entrust/src/commands/MigrationCommand.php 中。

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');
于 2016-04-30T13:40:49.323 回答
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'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 推出更新后,您可以将其删除或保留。由你决定。

于 2016-08-18T11:53:03.303 回答
2

尝试运行:

php artisan config:cache

确保您的应用程序使用新的配置文件

编辑

好的,现在我明白了,这个库要使用:

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

但是再也没有这样的东西auth了。

因此,作为临时解决方法,您应该像这样添加和table文件:https ://github.com/laravel/laravel/blob/5.1/config/auth.phpmodelauth

并等到 Entrust 升级以删除此

于 2015-12-30T12:37:16.003 回答