【问题标题】:Laravel 5.2: Entrust: Call to undefined method attachPermissionLaravel 5.2:委托:调用未定义的方法 attachPermission
【发布时间】:2016-03-09 18:24:32
【问题描述】:

如果不存在,我尝试附加权限并在运行 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()

【问题讨论】:

  • 检查您的用户模型是否存在 attachPermission() 方法。
  • 不,不是,attachPermission 不应该在用户模型中,它应该与 entrust 包一起提供。就像我使用 can, hasRole 方法一样,没有在用户模型上使用它们
  • 我想我做错了,我应该将权限附加到角色而不是用户。

标签: php laravel laravel-5.2


【解决方案1】:

改成

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

让我们看看进展如何。

【讨论】:

  • 我认为我做错了,我应该将权限附加到不具有用户的角色。无论如何,我会回复你。
【解决方案2】:

这是错误的实现,权限需要附加到角色而不是用户。

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

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

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多