Laravel — Edit & amp; обновить динамические поля формы (отношение один ко многим)

У меня есть две таблицы студентов и предметов.

Ученики Таблица

+----+------+
| ID | Name |
+----+------+
| 1 | John |
| 2 | Doe |
+----+------+

Предметы Таблица

+----+------------+------+---------+
| ID | Student_ID | Name | sub_mage |
+----+------------+------+---------+
| 1 | 1 | Eng | eng.jpg |
| 2 | 1 | Math | mth.jpg |
| 3 | 2 | Sci | sci.jpg |
+----+------------+------+---------+

Я хочу обновить обе таблицы из динамической формы, где пользователь может добавлять или удалять столько тем, сколько он хочет.

Редактировать форму
Редактировать форму с динамическими полями

Пока что моя форма обновляется, если я загрузил ровно столько же полей, сколько в базе данных. Но если я просто обновлю Subject Code только без загрузки изображения Subject, оно не будет обновлено.

Кроме того, если я добавляю или удаляю поля из формы редактирования, таблица не обновляется.

Редактировать вид

<form action="{{action('Controller@update', $id)}}" 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>

Студенческая модель

public function subs() {
return $this->hasMany(Subjects::class, 'student_id');
}

Модель предметов

public function subjects()
{
return $this->belongsTo(Students::class, 'student_id');
}

контроллер

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector