使用 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年前

已解决: 详见-> 传送门

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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年前 评论

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