使用 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');
}
}
已解决: 详见-> 传送门
givePermissionTo
的意思不是为角色添加权限吗?看你代码我的理解是为用户赋予权限。
@Ali 我是按文档里 A permission can be given to any user: 我也是想为用户添加权限. 但是就报这个错误了
同时我还想问下, ks_model_has_permissions中的model_id指的是什么东西呢?
@代码写代码 模型的ID
@Ali 指的是user id ? permissions 能否给几个示例呢?
roles —— 角色的模型表; permissions —— 权限的模型表; model_has_roles —— 模型与角色的关联表,用户拥有什么角色在此表中定义,一个用户能拥有多个角色; role_has_permissions —— 角色拥有的权限关联表,如管理员拥有查看后台的权限都是在此表定义,一个角色能拥有多个权限; model_has_permissions —— 模型与权限关联表,一个模型能拥有多个权限。