I have two tables Students and Subjects.
Students Table +----+------+ | ID | Name | +----+------+ | 1 | John | | 2 | Doe | +----+------+
Subjects Table +----+------------+------+---------+ | ID | Student_ID | Name | sub_mage | +----+------------+------+---------+ | 1 | 1 | Eng | eng.jpg | | 2 | 1 | Math | mth.jpg | | 3 | 2 | Sci | sci.jpg | +----+------------+------+---------+
I want to update both tables from a dynamic form where user can add or remove as many subjects as they want.
So far, my form is updated if I uploaded exactly the same number of fields as in database. But if I just update Subject Code only without uploading Subject image, it won't update.
Also, If I add or delete the fields from edit form, table are not updated.
Edit View
<form action="" enctype="multipart/form-data" method="post" files="true">
@foreach($subjects as $sub)
<div class="fields">
<input type="text" name="sub_code[]">
<input type="text" name="sub_name[]">
<input type="file" name="sub_img[]">
<button class="remove">Delete this subject</button>
</div>
@endforeach
</form>
Students Model
public function subs() {
return $this->hasMany(Subjects::class, 'student_id');
}
Subjects Model
public function subjects()
{
return $this->belongsTo(Students::class, 'student_id');
}
Controller
public function update(Request $request, $id)
{
$requestAll = $request()->all();
$student = Students::findOrFail($id);
$subjects= Subjects::with(['subjects','user'])->where('student_id', $student->id)->get();
if($student->update($requestAll))
{
$sub_img = request()->file('sub_img');
$i = 0;
if(isset($sub_img[$i]))
{
$pathToStore = public_path('images');
foreach ($subjects as $new_subjects)
{
$img = $sub_img[$i]->getClientOriginalName();
$img_name_ext = $sub_img[$i]->getClientOriginalExtension();
$img_name = $img.'-'.time().'.'.$img_name_ext;
Image::make($images[$i])->save($pathToStore . DIRECTORY_SEPARATOR. $img_name);
$new_subjects->sub_code = request('sub_code')[$i];
$new_subjects->sub_name = request('sub_name')[$i];
$new_subjects->sub_img = "images/{$sub_img}";
$i++;
$student->subs()->save($new_subjects);
}
}
}
}
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire