使用 permission 出现 Column 'model_id' cannot be null?

错误信息

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'model_id' cannot be null (SQL: insert into `ks_model_has_permissions` (`model_id`, `model_type`, `permission_id`) values (, App\User, 2))

调下面这句出现的错误

$user->givePermissionTo('add articles');

详细代码片段

app\User.php

<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
    use Notifiable;
    use HasRoles;
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
}

app\Http\Controllers\HomeController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use app\User;
class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function index(User $user)
    {
             $user->givePermissionTo('add articles');
    }
}
附言 1  ·  6年前

已解决: 详见-> 传送门

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

givePermissionTo 的意思不是为角色添加权限吗?
看你代码我的理解是为用户赋予权限。

6年前 评论

@Ali 我是按文档里 A permission can be given to any user: 我也是想为用户添加权限. 但是就报这个错误了

同时我还想问下, ks_model_has_permissions中的model_id指的是什么东西呢?

6年前 评论

@Ali 指的是user id ? permissions 能否给几个示例呢?

6年前 评论

roles —— 角色的模型表;    permissions —— 权限的模型表;    model_has_roles —— 模型与角色的关联表,用户拥有什么角色在此表中定义,一个用户能拥有多个角色;    role_has_permissions —— 角色拥有的权限关联表,如管理员拥有查看后台的权限都是在此表定义,一个角色能拥有多个权限;    model_has_permissions —— 模型与权限关联表,一个模型能拥有多个权限。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!