Apr 6, 2023
0
Level 1
Spatie Role Permission with UUID
I am trying to create Spatie Role Permission with UUID. Primary key and forgein key fields set to UUID.
When I tried to run a command to Generate Laravel Permission, Showing error
Class "App\Models\Permission" not found
CreateRoutePermissionsCommand.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Permission;
use App\Models\Role;
use Illuminate\Support\Facades\DB;
class CreateRoutePermissionsCommand extends Command
{
protected $signature = 'permission:create-permission-routes';
protected $description = 'Create a permission routes.';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$routes = Route::getRoutes()->getRoutes();
DB::statement('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"');
foreach ($routes as $route) {
if ($route->getName() != '' && $route->getAction()['middleware']['0'] == 'web') {
$permission = Permission::where('name', $route->getName())->first();
if (is_null($permission)) {
permission::create(['name' => $route->getName()]);
}
}
}
DB::statement('ALTER TABLE permissions ALTER COLUMN id SET DEFAULT uuid_generate_v4()');
$this->info('Permission routes added successfully.');
}
}
Permission Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Models\Permission as SpatiePermission;
class Permission extends SpatiePermission
{
public $incrementing = false;
protected $keyType = 'string';
}
Roles Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Models\Role as SpatieRole;
class Role extends SpatieRole
{
public $incrementing = false;
protected $keyType = 'string';
}
config/permission.php
'models' => [
'permission' => \App\Model\Permission::class,
'role' => \App\Model\Role::class,
],
But When I run command , it showing "Class "App\Models\Permission" not found"
Please or to participate in this conversation.