数组字段始终将字段的最后一个值存储到数据库

时间:2016-10-05 11:35:52

标签: laravel-5.2

帮助我处理项目中的数组输入。 这是表单字段:

<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');
    }

}

我想将字段“scores []”和“lesson_id []”的值作为数组,以便将多个数据存储到数据库中。 但是当我提交表单时,“lesson_id []”始终存储表单的最后一个值。例如,字段“lesson_id []”包含多个值,如“1,2,3,4”,但存储在数据库中的值始终为“4(字段的最后一个值)”。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

只存储了最后一个值,因为您在foreach循环后存储了数据。 如果您想将socres[]lesson_id[]作为数组存储在同一个表格中,可以使用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();

要检索每个值,请使用unserialize()