我一般都是Laravel的新手,我正在尝试使用Laratrust附加组件(用户角色和权限附加组件)设置播种器。当我运行php artisan db:seed
时,我收到错误Class 'App\Role' not found
并且无法弄清楚为什么它会看到Permissions类而不是Role类。我的播种机看起来像这样:
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();
}
}
我的Permission
目录中有Role
和App
个文件,分别包含以下内容:
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
也是为了看。为什么看到一个而不是另一个?
答案 0 :(得分:5)
Laraturst在最新版本(5.0)中为 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
{
//
}
答案 1 :(得分:0)
您应该更新Laratrust 5.0文档。 用于角色的Laratrust 5名称空间现在为*
Laratrust \ Models \ LaratrustRole
权限的名称空间是:
Laratrust \ Models \ LaratrustPermission
更新您的应用\角色
<?php
namespace App;
use Laratrust\Models\LaratrustRole;
class Role extends LaratrustRole
{
}
更新您的 APP \权限
namespace App;
use Laratrust\Models\LaratrustRole;
class Role extends LaratrustRole
{
}