我试图从同一个表单保存多个课程到数据库中。我这样做的方法是,我有一个表单,其中的字段具有相同的名称,就像这样。
<form class="form-group" action="{{route('save_courses')}}" method="POST" enctype="multipart/form-data"
class="remove-empty-values">
{{ csrf_field() }}
<div class="form-group mt-4">
<label for="exampleFormControlInput1">Category Title</label>
<select name="cat_id" class="form-control">
<option value="">Select Category</option>
@foreach ($cats as $cat)
<option value="{{$cat->id}}">{{$cat->title}}</option>
@endforeach
</select>
</div>
<div class="form-group mt-3">
<label for="exampleFormControlInput1">Select Department</label>
<select name="dept" class="form-control" id="">
<option value="">Select Department</option>
<option value="csc">Computer Science</option>
<option value="mac">Mass Communication</option>
<option value="bam">Business Administration</option>
<option value="cet">Computer Engineering</option>
<option value="eee">Electrical Electronics</option>
<option value="Acc">Accountancy</option>
</select>
</div>
<div class="form-group mt-3">
<label for="exampleFormControlInput1">Select Semester</label>
<select name="semester" class="form-control" id="">
<option value="">Select Semeser</option>
<option value="sem1">Semester 1</option>
<option value="sem2">Semester 2</option>
<option value="sem3">Semester 3</option>
<option value="sem4">Semester 4</option>
<option value="sem5">Semester 5</option>
<option value="sem6">Semester 6</option>
</select>
</div>
<div class="form-group mt-3">
<label for="exampleFormControlInput1">Program</label>
<select name="program" class="form-control" id="">
<option value="">Select Program</option>
<option value="ND">ND</option>
<option value="HND">HND</option>
</select>
</div>
<small>
Courses attached below will be attached to above Semester, Department, and Program
</small>
<div class="mb-5">
<div class="form-group">
<label for="exampleFormControlInput1">Add Course</label>
<input type="text" class="form-control" name="title[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Code</label>
<input type="text" class="form-control" name="code[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Credit Unit</label>
<input type="text" class="form-control" name="unit[]">
</div>
</div>
<div class="mb-5">
<div class="form-group">
<label for="exampleFormControlInput1">Add Course</label>
<input type="text" class="form-control" name="title[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Code</label>
<input type="text" class="form-control" name="code[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Unit</label>
<input type="text" class="form-control" name="unit[]">
</div>
</div>
<div class="mb-5">
<div class="form-group">
<label for="exampleFormControlInput1">Add Course</label>
<input type="text" class="form-control" name="title[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Code</label>
<input type="text" class="form-control" name="code[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Unit</label>
<input type="text" class="form-control" name="unit[]">
</div>
</div>
<div class="mb-5">
<div class="form-group">
<label for="exampleFormControlInput1">Add Course</label>
<input type="text" class="form-control" name="title[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Code</label>
<input type="text" class="form-control" name="code[]">
</div>
<div class="form-group">
<label for="exampleFormControlInput1">Course Unit</label>
<input type="text" class="form-control" name="unit[]">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
字符串
我尝试从每个字段创建新课程,名称为标题,并将保存代码和单元保存到我创建的每个课程。此外,我希望代码忽略未填充的字段组。
在我的控制器中,我这样做了,使用foreach:
$input = $request->all();
$courses = [];
foreach($request->title as $key => $value) {
foreach($request->unit as $unit => $v){
foreach($request->code as $code => $c){
if($value !== null && $v !== null && $c !== null){
$course =[
'cat_id' => $request->cat_id,
'semester' => $request->semester,
'program' => $request->program,
'code' => $request->code,
'unit' => $input['unit'][$unit],
'code' => $input['code'][$code],
'dept' => $request->dept,
'title' => $input['title'][$key],
];
array_push($courses, $course);
}else{
Alert::info('Oops', 'Something went wrong.');
}
}
}
}
if($courses !== null){
foreach($courses as $course){
if(Course::insert($course)){
Alert::success('Success', 'Successful!');
}else{
Alert::info('Oops', 'Something went wrong.');
}
}
}else{
Alert::info("Oops", "You didn't insert any course and almost ruined our db!");
}
// $save=Course::insert(title[]);
return redirect()->back();
}
型
表单插入到DB中并创建新字段。不幸的是,它也创建了已创建课程的副本。
有什么需要帮忙的吗?
1条答案
按热度按时间e1xvtsh31#
你有嵌套的循环来遍历“title”、“code”和“unit”数组,导致每个课程有多个插入。
字符串