簡體   English   中英

Zizaco / entrust保存權限使用角色表

[英]Zizaco/entrust Saving permission uses roles table

我正在使用Zizaco / entrust的依賴關系在laravel 5.3中構建的Web應用程序中創建角色及其權限。 每當我嘗試保存新創建的權限時,我遇到的問題就是(正如標題所述)。 它存儲在roles表中。

遷移文件尚未從原始的zizaco / entrust軟件包中更改。 我使用php artisan vendor:publish創建遷移。 角色和權限模型與文檔中的描述非常相似:

namespace App\Models;

use Zizaco\Entrust\EntrustRole;

class Role extends EntrustRole
{

protected $table = 'roles';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
  protected $fillable = [
      'name', 'display_name', 'description',
  ];
}

和許可

namespace App\Models;

use Zizaco\Entrust\EntrustRole;

class Permission extends EntrustRole
{

protected $table = 'permissions';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
      'name', 'display_name', 'description',
  ];
}

在播種器文件中,我使用以下代碼生成角色和播種器:

use App\Models\Permission;
use App\Models\Role;
use Illuminate\Database\Seeder;

class RoleSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $owner = new Role();
    $owner->name         = 'owner';
    $owner->display_name = 'Eigenaar';
    $owner->save();

    $createOwner = new Permission();
    $createOwner->name         = 'create-owner';
    $createOwner->display_name = 'Eigenaar toevoegen';
    $createOwner->save();
 }

entrust的配置文件也被修改為角色和權限模型以及表的正確路徑。

我已經嘗試過作曲家dump-autoload甚至php artisan cache:clear。

有什么我想念的嗎? 請幫忙。 如果語法不正確,請原諒我的英語。

編輯:當我嘗試通過以下行將我的權限附加到角色時:

$owner->attachPermission($createOwner);

我收到一個SQL錯誤:

SQLSTATE [23000]:完整性約束違規:1452不能添加或更新子行(外鍵約束失敗小號reunions_devpermission_role ,約束permission_role_permission_id_foreign外鍵( permission_id )參考permissionsid )ON DELETE CASCADE ON UPDATE CASCADE)

那是因為沒有鏈接ID的權限記錄。 有點明顯。

每當我嘗試保存新創建的權限時,我遇到的問題就是(正如標題所述)。 它存儲在角色表中。

查看您提供的代碼,您為Permission模型擴展了錯誤的類。 將您的權限模型中的use語句和擴展類更改為EntrustPermission

use Zizaco\Entrust\EntrustPermission;

class Permission extends EntrustPermission

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM