我正在尝试使用播种机创建新记录。
这是我在种子文件上写的代码:
RoleUser::create(['role_id'=>$roleId[0],'user_id'=>$user->id]);
PermissionRole::create(['permission_id'=>1,'role_id'=>$roleId[0]]);
这是我得到的错误
[ErrorException] Illegal offset type
RoleUser模型用于role_user表
Schema::create('role_user', function (Blueprint $table) {
$table->integer('role_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->primary(['role_id','user_id']);
});
PermissionRole模型用于permission_role表
Schema::create('permission_role', function (Blueprint $table) {
$table->integer('permission_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->primary(['permission_id','role_id']);
});
RoleUserModel有如下代码:
class RoleUser extends Model
{
protected $table='role_user';
protected $primaryKey=['role_id','user_id'];
protected $fillable=['role_id','user_id'];
public $timestamps=false;
}
终于想通了。出现问题是因为我在RoleUser模型中使用了以下代码:
protected $primaryKey=['role_id','user_id'];
删除这一行,现在它工作良好。
当试图使用对象或数组作为索引键访问数组索引时,会发生非法偏移类型错误。
可能错误应该是你如何得到$roleId
和$user
。
您必须确保$roleId
和$user
包含您想要的内容,并且您正在正确访问它。