2017-11-15 12 views
0

一部の入力データをデータベースに保存しています。 forループを使用すると、入力データを別の行に保存しようとしています。forループがLaravel Controllerで正しく機能しない

for ($i=0; $i < $day ; $i++) { 
    $activity->event_id = $request->event_id; 
    $activity->created_by = $id; 
    $activity->index = $request->index[$i]; 
    $activity->activity_title = $request->activity_title[$i]; 
    $activity->activity_details = $request->activity_details[$i]; 

    $activity->save(); 
} 

問題は、最後の値のみを保存することです。 day = 2の場合、配列の2番目のインデックスの情報が保存されているとします。最初のインデックス値を無視します。どこが間違っていますか?

+0

同じオブジェクト$ activityを再利用しているようですので、最初の繰り返しで書き込まれた行を2番目のデータで更新します。 –

答えて

7

$activityをループ内でインスタンス化します(例:

for ($i=0; $i < $day ; $i++) { 
    $activity = new Activity(); 

    $activity->event_id = $request->event_id; 
    $activity->created_by = $id; 
    $activity->index = $request->index[$i]; 
    $activity->activity_title = $request->activity_title[$i]; 
    $activity->activity_details = $request->activity_details[$i]; 

    $activity->save(); 
} 

今は、最後の値だけが残っている理由を説明する、繰り返しごとに同じインスタンスを上書きしています。

+0

これは解決策です。ありがとう@ EmilePels –

関連する問題