2016-11-01 11 views
0

これはシナリオです。ラーベル - 親と同じテーブルの1対多多く

フォームに記入すると、このフォームには名前、電子メール、国とスキル(これは、あらかじめ用意されたデータベーステーブルスキルから読み込まれた多数のスキルのドロップダウン)があります。人がフォームに記入すると、彼は自分が持っている複数のスキルを選択することができます。これは、ユーザーが多くのスキルを持っていることを意味します(1対多)。ユーザーがフォームに入力して[送信]をクリックすると私はUserTableを保存して、UserSkillsもユーザーに関連して保存します。

この問題はユーザーがまだ保存されていないため、スキルを保存するためにcantを取得できません。セーブが押されると同時に両方とも保存しなければなりません。

最善の方法私はLaravel

+0

可能な重複[Laravel、最後のインサートID雄弁を使用して取得](http://stackoverflow.com/questions/21084833/laravel-get-last-insert-id-using-eloquent) – snitch182

+0

あなたがしたいです次のような「最後のインサートIDを取得」の例を探してください: http://stackoverflow.com/questions/21084833/laravel-get-last-insert-id-using-eloquent – snitch182

答えて

1

スキルIDが配列として書式設定されていると仮定します。ピボットテーブルUserSkillsがあります。 1つのユーザーが複数のスキルを持ち、1つのスキルが複数のユーザーに属することができるので、これは多対多の関係になるため、ユーザークラスを使用してbelongsToManyを作成します。だから、その後、あなたのApp\Userクラスの

public function skills(){ 
    return $this->belongsToMany('\App\UserSkills','table_name','user_id','skill_id'); 
} 

Detailed info on pivot table creation

に、あなたはその後、ユーザ

$user = new User(); 
$user->username = $request->input('username'); 
// other inputs or use a `create` method 
$user->save(); 

を作成するときに、新しく作成したユーザーにスキルIDを添付してください。

$user->skills()->attach($request->input('skill_ids')); 
0

でこれを行うことができますあなたがそうのように、新しく作成したユーザーにVARを割り当てることができます。

$user = User::create([ 
    'username' => 'user' 
]); 

あなたはその後、どこでも

UserSkills::create([ 
    'user_id' => $user->id, 
]); 
の下にその$のユーザーを使用することができます
+0

どのように私はスキルの情報を取得するのですか?私は現在、制御メソッドでRequestを介して注入されたユーザーの情報のみを取得するので、同じコントローラメソッドでも – user3602477

関連する問題