2016-11-02 12 views
1

用コントローラストア方法私は4モデルLaravel 5.3 - このフォーム

ユーザー持っている - デフォルトのフィールドを持つ基本的なLaravelのユーザー

エクスカーション - フィールド[ 'ID'、 'user_idの'、 'name' を持つが、 'START_TIME'、 'END_TIME']

バス - フィールドを持つは[ 'ID' は、 'excursion_id'、 'staff_qnty'、 'staff_price']

スタッフ 'staff_id' - フィールド[ 'ID' と、 '名前']

そして、これらは関係

User hasMany Excursion 
Excursion belongsTo User 

Excursion hasMany Bus 
Bus belongsTo Excursion 

Bus hasMany Staff 
Staff hasMany Bus 

あると私はbus_staff のためのピボットテーブルを持っているこれは、ユーザーのための形式です:

enter image description here

とユーザーがフォームを送信するとき、これは(DDです$ request);

enter image description here

どのようにすべきであるMyControllerする@ storeメソッドのルックのような... はアソシエイト()か何かでこのデータを保存する方法はありますか?助けてください。あなたのように試すことができ

+0

、何のスタッフの名前がありません。 –

+0

私はそれを修正しました...今はstuff_idがあります – lewis4u

答えて

1

:あなたの入力で

$excursion_input = ['name' => $request->get('name'), 'start_time' => $request->get('start'), 'end_time' => $request->get('end')]; 

$excursion = auth()->user()->excursion()->create($excursion_input); 

for ($i=0; $i < count($request->get('stuff_id')); $i++) 
{ 
    $input = [ 
     'staff_id' => $request->get('stuff_id')[$i], 
     'staff_qnty' => $request->get('qnty')[$i], 
     'staff_price' => $request->get('price')[$i], 
    ]; 
    $bus = $excursion->bus()->create($input); 
} 
+0

これはおそらく動作するでしょうが、あまりにも多くのコードです...関連メソッドと同期でそれを行う方法がなければなりません。ラーヴェルの方法!!! – lewis4u

+1

あなたの 'input'データは正しいフォーマットではありませんので、' for'ループが必要で、 'associate()'は 'belongsTo'関係に使用され、' sync() 'は' belongsToMany'で使用されます。それらのどれも、ここでモデルを作成するために使用していません。 –