2016-10-05 6 views
0

私のプロジェクトの配列入力の作業を手伝ってください。 これは、フォームフィールドです:配列フィールドは常にフィールドの最後の値をデータベースに格納します

<form action="" method=""> 
    <input type="text" class="form-control" name="scores[]"> 
    <input type="hidden" name="lesson_id[]" value=""> 
    <input type="hidden" name="year_id" value=""> 
    <input type="hidden" name="grade_id" value=""> 
    <input type="hidden" name="clas_id" value=""> 
    <input type="hidden" name="student_id" value=""> 
</form> 

マイコントローラー:

public function store(Request $request) 
    { 

     foreach ($request->scores as $score) 
     { 
      $scr = new Assestment; 
      $scr->year_id = $request->year_id; 
      $scr->grade_id = $request->grade_id; 
      $scr->clas_id = $request->clas_id; 
      $scr->student_id = $request->student_id; 
      foreach($request->lesson_id as $lesson) 
      { 
       $scr->lesson_id = $lesson; 
      } 
      $scr->score = $score; 
      $scr->save(); 
     } 

    } 

マイモデル:

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Assestment extends Model 
{ 
    protected $table = 'assestments'; 

    protected $fillable = [ 
     'year_id', 'grade_id', 'clas_id', 'student_id', 'lesson_id', 'score', 
    ]; 

    public function students() 
    { 
     return $this->belongsToMany('App\Models\Student'); 
    } 

} 

私は、フィールド "スコア[]" と "の値をしたいと思いますlesson_id [] "を配列として使用して、複数のデータをデータベースに格納します。 しかし、私がフォームを送信するとき、 "lesson_id []"は常にフォームの最後の値を保存します。たとえば、 "lesson_id []"フィールドには "1,2,3,4"のような複数の値が含まれていますが、データベースに格納される値は常に "4(フィールドの最後の値)"です。

どうすればよいですか?あなたはforeachループの後にデータを格納しているため

+0

を使用し、各値を盗んするにserialize()

$scr = new Assestment; $scr->year_id = $request->year_id; $scr->grade_id = $request->grade_id; $scr->clas_id = $request->clas_id; $scr->student_id = $request->student_id; $scr->lesson_id = serialize($request->lesson_id); $scr->score = serialize($request->$score); $scr->save(); 

を使用することができます。 –

答えて

0

だけ最後の値が格納されています。 あなたが同じテーブルに配列としてsocres[]lesson_id[]を保存したい場合は、あなたは、foreachループの後に保存されたので、最後の値だけが保存されているunserialize()

+0

それはうまくいかない。私がしたいのは、レッスンに基づいたスコアを与えることだけです。レッスンが10回ある場合は、レッスンのIDとスコアのテキストフィールドが10個のテキストフィールドが10個あります。しかし、私がフォームを提出するたびに、dabaseに格納されたスコアは入力に基づいていますが、lesson_id []は常に最後のIDを格納します。例えば: {{フォーム::テキスト( 'lesson_id []'、 '1')}} {{フォーム::テキスト( 'lesson_id []'、 '2')}} {{フォーム::テキスト( 'lesson_id []'、 '5')}} {{フォーム::テキスト( 'lesson_id []'、 '7')}} {{フォーム::テキスト( 'lesson_id []'、 '12' )}}データベースに格納される値は常に "12"です。私は何を意味するのですか? –

+0

foreachループ内で保存してみませんか? –

関連する問題