[英]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.