2017-01-04 128 views
3

我是Laravel的新手,並且試圖使用Laratrust附加組件(用戶角色和權限附加組件)設置播種器。當我運行php artisan db:seed時,出現錯誤Class 'App\Role' not found,但無法找出爲什麼它看到Permissions類而不是Role類。我播種機看起來是這樣的:找不到Laravel和Laratrust命名空間

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目錄PermissionRole文件與此相應的內容:

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

如果我只是直接引用'使用Laratrust \ LaratrustRole;'在我的播種機和使用'LaratrustRole()',而不是'角色()'它的工作原理。 ..我的命名空間有什麼問題? – jrothafer

+0

一切看起來確定您提供的信息。你可能在'DatabaseSeeder.php'中調用了其他播種器嗎?嘗試運行'php artisan db:seed --class = LaratrustSeeder' –

回答

3

Laraturst更改他的命名空間LaratrustRoleLaratrustPermission在最新的版本(5.0) 正確命名空間

Laratrust\Models\LaratrustRole; 
Laratrust\Models\LaratrustPermission; 

,所以你應該改變你的代碼

app \ Role

<?php 

namespace App; 

use Laratrust\Models\LaratrustRole; 

class Role extends LaratrustRole 
{ 
    // 
} 

應用程序\權限

<?php 

namespace App; 

use Laratrust\Models\LaratrustPermission; 

class Permission extends LaratrustPermission 
{ 
    // 
}