帮助我处理项目中的数组输入。 这是表单字段:
<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(字段的最后一个值)”。
我该怎么办?
答案 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()