我目前正在尝试保存我的数据透视表,但此错误仍在继续。
SQLSTATE [42S22]:未找到列:1054未知列' role_role_id'在'字段列表' (SQL:插入role_user
(role_role_id
,user_id
)值(1,1))
我不知道为什么role_role_id处于双重状态
这是我的模特
作用
public function users()
{
return $this->belongsToMany(User::class);
}
用户
public function roles()
{
return $this->belongsToMany(Role::class);
}
控制器
$user = new User([
'name' => $request->get('username'),
'email' => $request->get('email'),
'password' => $request->get('password'),
'role_id' => $request->get('role_id'),
]);
$user->save();
$role = Role::find(1);
$role->users()->save($role);
移植
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->string('role_id');
$table->rememberToken();
$table->timestamps();
});
Schema::create('roles', function (Blueprint $table) {
$table->increments('role_id');
$table->string('role');
//Required
$table->string('created_by');
$table->string('updated_by');
$table->string('is_active');
$table->timestamps();
});
Schema::create('role_user', function (Blueprint $table) {
$table->integer('role_id');
$table->integer('user_id');
$table->primary(['role_id', 'user_id']);
});
P.S。我只是遵循了雄辩的laravel文档 https://laravel.com/docs/5.4/eloquent-relationships#the-save-method
答案 0 :(得分:1)
对于多对多,您应该使用attach()
方法:
$user = User::create($request->all());
$user->roles()->attach(1);
另外,改变这个:
$table->increments('role_id');
为:
$table->increments('id');
并删除此行:
$table->primary(['role_id', 'user_id']);
然后重新创建表格。 primary
不适用于数据透视表外键。