2016-03-09 92 views
0

我试过,如果不存在附加许可和运行数据库种子后遇到错误 -Laravel 5.2:委托:调用未定义的方法attachPermission

<?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', '[email protected]')->first(); 
     if(!$adminUser->hasRole('admin')) { 
      $adminUser->attachRole($admin); 
     } 

     $moderatorUser = User::where('email', '[email protected]')->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]调用未定义的方法照亮\数据库\查询\生成器:: attachPermission()

+0

检查您的User模型中是否存在attachPermission()方法。 – SarangaR

+0

不是,attachPermission不应该在用户模型中,它应该与委托包一起出现。像我使用罐头,hasRole方法没有他们在用户模型 – HADI

+0

我想我做错了,我应该附加权限角色不与用户。 – HADI

回答

0

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

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

$admin$moderator是角色对象。

0

将其更改为

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

,让看看怎么回事。

+0

我认为我做错了实现,我应该附加权限的角色不与用户。无论如何,我会回到你身边。 – HADI

+0

是的,你是对的,它应该是角色 – oseintow

相关问题