Сохранить данные из таблицы в базу данных с помощью одной отправки (Laravle)

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

view.blade.php

<fieldset>
  <div class="row">
    <div class="col-xs-12">
        <div id="LMOtablediv">
            <input type="button" id="addmoreLMObutton" value="Add" onclick="insRow(event)" />
            <table id="addLMOtable" border="1">
                <thead>
                    <tr>
                        <td>No.</td>
                        <td>Name</td>
                        <td>Risk Level</td>
                        <td>Quantity</td>
                        <td>Volume</td>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1</td>
                        <td>{!! Form::text('lmoname', null, array('id'=>'lmoname'))!!}</td>
                        <td>{!! Form::text('lmorisk_level', null, array('id'=>'lmorisk_level'))!!}</td>
                        <td>{!! Form::number('lmoquantity', null, array('id'=>'lmoquantity'))!!}</td>
                        <td>{!! Form::number('lmovolume', null, array('id'=>'lmovolume'))!!}</td>
                        <td>{{ Form::hidden('lmonotification_type', '1', null, array('id'=>'lmonotification_type')) }}</td>
                        <td><input type="button" id="delPOIbutton" value="Delete" onclick="deleteRow(this)"/></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
  </div>
</fieldset>

Я динамически добавляю больше строк в таблицу с помощью JavaScript

script.js

function deleteRow(el) {
var table = document.getElementById('addLMOtable');
var i = el.parentNode.parentNode.rowIndex;
table.deleteRow(i);
while (table.rows[i]) {
    updateRow(table.rows[i], i, false);
    i++;
}
}

function insRow(event)
{
var table = document.getElementById('addLMOtable'),
    tbody = table.getElementsByTagName('tbody')[0],
    clone = tbody.rows[0].cloneNode(true);
var new_row = updateRow(clone, ++tbody.rows.length, true);
tbody.appendChild(new_row);
}

function updateRow(row, i, reset) {
row.cells[0].innerHTML = i;

var inp1 = row.cells[1].getElementsByTagName('input')[0];
var inp2 = row.cells[2].getElementsByTagName('input')[0];
var inp3 = row.cells[3].getElementsByTagName('input')[0];
var inp4 = row.cells[4].getElementsByTagName('input')[0];
inp1.id = 'lmoname' + i;
inp2.id = 'lmorisk_level' + i;
inp3.id = 'lmoquantity' + i;
inp4.id = 'lmovolume' + i;

if (reset) {
    inp1.value = inp2.value = inp3.value = inp4.value = '';
}

return row;
}

файл контроллера

public function create(Request $request)
{

    $notification = new AddNotification;

    $notification->lmoname = $request->lmoname;
    $notification->lmorisk_level = $request->lmorisk_level;
    $notification->lmoquantity = $request->lmoquantity;
    $notification->lmovolume = $request->lmovolume;
    $notification->user_id = Auth::user()->id;
    $notification->save();

    return redirect('home/notification/notificationForm');

    // return view('ApplicationForms.notifi', $notification);
}

Проблема в том, что когда я добавляю новые строки, заполняю их и отправляю, только последняя строка обновляется в базе данных. Я знаю, что это неправильный способ кодирования контроллера, если я хочу отправить несколько строк одновременно. Кто-нибудь может порадовать руководством как это сделать?

0 ответов

Другие вопросы по тегам