问题描述
我试图清除缓存和配置,并进行供应商和转储一切,但一直告诉我
Laratrust类不存在
我正在使用laravel 8 任何解决方案?
这是LaratrustSeeder.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Config;
class LaratrustSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->truncateLaratrustTables();
$config = config('laratrust_seeder.roles_structure');
$mapPermission = collect(config('laratrust_seeder.permissions_map'));
foreach ($config as $key => $modules) {
// Create a new role
$role = \App\Models\Role::firstOrCreate([
'name' => $key,'display_name' => ucwords(str_replace('_',' ',$key)),'description' => ucwords(str_replace('_',$key))
]);
$permissions = [];
$this->command->info('Creating Role '. strtoupper($key));
// Reading role permission modules
foreach ($modules as $module => $value) {
foreach (explode(',',$value) as $p => $perm) {
$permissionValue = $mapPermission->get($perm);
$permissions[] = \App\Models\Permission::firstOrCreate([
'name' => $module . '-' . $permissionValue,'display_name' => ucfirst($permissionValue) . ' ' . ucfirst($module),'description' => ucfirst($permissionValue) . ' ' . ucfirst($module),])->id;
$this->command->info('Creating Permission to '.$permissionValue.' for '. $module);
}
}
// Attach all permissions to the role
$role->permissions()->sync($permissions);
if(Config::get('laratrust_seeder.create_users')) {
$this->command->info("Creating '{$key}' user");
// Create default user for each role
$user = \App\Models\User::create([
'name' => ucwords(str_replace('_','email' => $key.'@app.com','password' => bcrypt('password')
]);
$user->attachRole($role);
}
}
}
/**
* Truncates all the laratrust tables and the users table
*
* @return void
*/
public function truncateLaratrustTables()
{
$this->command->info('Truncating User,Role and Permission tables');
Schema::disableForeignKeyConstraints();
DB::table('permission_role')->truncate();
DB::table('permission_user')->truncate();
DB::table('role_user')->truncate();
if(Config::get('laratrust_seeder.truncate_tables')) {
\App\Models\Role::truncate();
\App\Models\Permission::truncate();
}
if(Config::get('laratrust_seeder.truncate_tables') && Config::get('laratrust_seeder.create_users')) {
\App\Models\User::truncate();
}
Schema::enableForeignKeyConstraints();
}
}
at config\app
added this to providers
'Laratrust\LaratrustServiceProvider::class,'
and this to alias
'Laratrust' => Laratrust\LaratrustFacade::class,
DatabaseSeeder.php文件
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use LaratrustSeeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// User::factory(10)->create();
$this->call(LaratrustSeeder::class);
}
}
解决方法
从代码顶部删除use LaratrustSeeder;
。您不能将use语句与非复合名称一起使用。
添加
命名空间数据库\种子;
(LaratrustSeeder.php)文件顶部的