总的来说,我是 Laravel 的新手,我正在尝试使用 Laratrust 附加组件(用户角色和权限附加组件)设置播种机。当我运行 php artisan db:seed
时,我收到一条错误消息,提示 Class 'App\Role' not found
并且无法弄清楚为什么它看到的是 Permissions 类而不是角色类。我的播种机看起来像这样:
use Illuminate\Database\Seeder;
use App\Permission;
use App\Role;
class LaratrustSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$owner = new Role();
$owner->name = 'owner';
$owner->display_name = 'Project Owner';
$owner->description = 'User is the owner of a given project';
$owner->save();
}
}
我的 App
目录中有 Permission
和 Role
文件,分别包含以下内容:
namespace App;
use Laratrust\LaratrustPermission;
class Permission extends LaratrustPermission
{
//
}
和
namespace App;
use Laratrust\LaratrustRole;
class Role extends LaratrustRole
{
//
}
我检查过我的 laratrust.php
配置文件有 'role' => 'App\Role'
和 'permission' => 'App\Permission'
设置。我重新运行 composer dump-autoload
也只是为了看看。为什么它看到一个而不是另一个?
最佳答案
Laraturst 在最新版本 (5.0) 中更改了 namespace 的 LaratrustRole 和 LaratrustPermission 正确的命名空间应该是
Laratrust\Models\LaratrustRole;
Laratrust\Models\LaratrustPermission;
所以你应该把你的代码改成
应用\角色
<?php
namespace App;
use Laratrust\Models\LaratrustRole;
class Role extends LaratrustRole
{
//
}
和app\Permission
<?php
namespace App;
use Laratrust\Models\LaratrustPermission;
class Permission extends LaratrustPermission
{
//
}
关于namespaces - 找不到 Laravel 和 Laratrust 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470897/