在laravel 5.3中创建新记录时的非法偏移类型

时间:2016-11-01 14:09:06

标签: php laravel-5

我正在尝试使用播种机创建新记录。

这是我在播种文件中写的代码:

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']);
    });

RoleUser 模型包含以下代码:

    class RoleUser extends Model
{
    protected $table='role_user';
    protected $primaryKey=['role_id','user_id'];
    protected $fillable=['role_id','user_id'];
    public $timestamps=false;
}

2 个答案:

答案 0 :(得分:1)

终于明白了。 出现问题是因为我在RoleUser模型中使用了以下代码:

protected $primaryKey=['role_id','user_id'];

删除此行,现在工作正常。

答案 1 :(得分:0)

当您尝试使用对象或数组作为索引键来访问数组索引时,会发生非法的偏移类型错误。

错误应该是您获取$roleId$user的方式。

您必须确保$roleId$user包含您想要的内容以及您正确访问它。