Обновление входного массива Laravel с одной отправкой - PullRequest
0 голосов
/ 23 февраля 2019

Я обновляю количество заголовков для каждого заголовка. Я новичок в laravel. Пожалуйста, помогите ниже - моя таблица, формы, представление и код функции обновления контроллера Table Add Header NameAdd Header Amount

Просмотр Добавить имя головы

div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
            <form action="/headers" method="POST">
                @csrf
                <div class="row">
                    <div class="col">
                        <label for="">Header Name</label>
                        <input type="text" name="header_name" required="required">
                        <input type="submit" class="btn btn-primary" name="submit">
                    </div>
                </div>
            </form>
        </div>

Просмотр Добавить сумму головы

<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
            <form action="/headers" method="POST">
                @csrf
                @foreach ($data as $header)
                    <div class="row">
                        <div class="col">
                            <label for="">Header Name</label>
                            <input type="text" name="header_name[]" value="{{$header->header_name}}" required="required" readonly="readonly">
                            <input type="number" min="0" name="header_amount[]" placeholder="Amount" required="required">
                        </div>
                    </div>
                @endforeach
                <input type="submit" class="btn btn-primary" name="submit1">
            </form>
        </div>

Функция контроллера

$count = Header::count();
for ($i = 1; $i <= $count; $i++)
            {
                $header = Header::find($i);
                $header->header_amount = $request->input('header_amount');
                $header->save();
            }
            exit();

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

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

$header = Header::all();
            foreach ($header as $key => $detail)
            {
                $detail->header_amount = $request->input('header_amount')[$key];
                $detail->save();
            }
            exit();
0 голосов
/ 23 февраля 2019

Я бы предложил добавить заголовок ids[] в качестве скрытого ввода, чтобы вам не нужно было изначально получать все Header, что будет означать на один запрос меньше.

<div class="row">
    <div class="col">
        <input type="hidden" name="ids[]" value="{{ $header->id }}">
        <label for="">Header Name</label>
        <input type="text" name="header_name[]" value="{{$header->header_name}}" required="required" readonly="readonly">
        <input type="number" min="0" name="header_amount[]" value="{{ $header->header_amount }}" placeholder="Amount" required="required">
    </div>
</div>

Тогда в вашем контроллере вы можете получить что-то вроде:

$amounts = request('header_amount');

foreach (request('ids') as $key => $id) {
    Header::where('id', $id)->update(['header_amount' => $amounts[$key]]);
}
0 голосов
/ 23 февраля 2019

Попробуйте этот код:

$count = Header::count();
$header = Header::find($i);

foreach ($header as $key => $detail) {
   $header->header_amount = $request->input('header_amount')[$key];
   $detail->save();
}

Надеюсь, это будет полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...