Here's what I was doing before the error occurred整合性制約違反:1048列「user_idのは」nullにエラーすることはできませんロールを割り当てるときに発生する(Laravel 5.3)
私は、新しいテーブルの私のusers
とroles
テーブルからユーザーの役割を割り当てるためにしようとしています「role_users」と呼ばれます。
Role.phpモデル
class Role extends Model{
public function users(){
return $this->belongsToMany('App\User','role_users', 'role_id', 'user_id');
}
}
User.phpモデル
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function roles(){
return $this->belongsToMany('App\Role', 'role_users', 'user_id', 'role_id');
}
}
私は私のAccountController.php
$roleuser = new User;
$user_superadmin = Role::where('role_desc', 'Superadmin')->first();
$roleuser->roles()->attach($user_superadmin); /*this line specifically*/
から、この行でエラーを取得しておきます
私はIntegrity constraint violation: 1048 Column 'user_id' cannot be null (SQL: insert into 'role_users' ('role_id', 'user_id') values (1,))
を持っています。 users table
は既に更新されており、user_id
は既にデータベースに保存されています。
誰かが私を助けることができますか?私はいくつかの重要なものを見逃しているに違いない。
MYスキーマ感がヒリヒリされますので、
または
あなたがここにも$roleuser
変数を使用していないはずですが。 'User'は属しているのではなく、多くの役割を持つべきではありませんか? – scottevans93代わりにhasManyを使用することを意味しますか?はい、私は最後の1泊を使っていました。しかし、私は 'Call Undefined \ Illuminate \ Database \ Query \ Builder :: attach()'エラーを受け取っています。それは両側にbelongsToMany関係を持つ必要があります。 – Eggnog654
意味がありません。関係では、モデルAはモデルBに属し、モデルBは多くのモデルAを有する。彼らを両方とも所属させることは、それぞれの原則に反しているようです。 – scottevans93