簡體   English   中英

Laravel 5.2:委托:調用未定義的方法attachPermission

[英]Laravel 5.2: Entrust: Call to undefined method attachPermission

我嘗試附加權限(如果不存在),並且在運行db seed之后出現錯誤-

<?php

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

class AttachRolesAndPermissionsToUsers extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $admin = Role::where('name', 'admin')->first();
        $moderator = Role::where('name', 'moderator')->first();

        $createPost = Permission::where('name', 'create-post')->first();
        $editUser = Permission::where('name', 'edit-user')->first();


        // attach role
        $adminUser = User::where('email', 'a@gmail.com')->first();
        if(!$adminUser->hasRole('admin')) {
            $adminUser->attachRole($admin);
        }

        $moderatorUser = User::where('email', 'b@gmail.com')->first();
        if(!$moderatorUser->hasRole('moderator')) {
            $moderatorUser->attachRole($moderator);
        }

        // attach Permission
        if(!$adminUser->can(['create-post', 'edit-user'])) {
            $adminUser->attachPermissions([$createPost, $editUser]);
        }

        if(!$moderatorUser->can('create-post')) {
            $moderatorUser->attachPermission($createPost);
        }
    }
}

[BadMethodCallException]調用未定義的方法Illuminate \\ Database \\ Query \\ Builder :: attachPermission()

更改為

$adminUser->perms()->sync([$createPost->id, $editUser->id]);

讓我們看看情況如何。

這是錯誤的實現,權限需要與角色而不是用戶一起附加。

$admin->attachPermissions([$createPost, $editUser]);
$moderator->attachPermission($createPost);

其中$admin$moderator是角色對象。

暫無
暫無

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

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