Laravel обработка массива входов - PullRequest
0 голосов
/ 10 июля 2020

У меня есть следующая база данных:

id | name | age |
-----------------
 1 | John |  20 |
 2 | Jack |  29 |

Я хочу отредактировать их все в одной форме с возможностью «Добавить еще», а затем сохранять / обновлять по мере необходимости. Как это возможно с помощью Laravel?

Моя форма в настоящее время такова:

@foreach($people as $person)
    <input type="text" name="name[]" class="form-control" value="{{ $person->name }}">
    <input type="text" name="age[]" class="form-control" value="{{ $person->age }}">
@endforeach

Затем в Laravel я получаю $request->all() следующим образом:

  "name" => array:2 [▼
    0 => "John"
    1 => "Jack"
  ]
  "name" => array:2 [▼
    0 => "20"
    1 => "29"
  ]

Что, я думаю, ожидаемо, но неудобно для работы с Eloquent. Каким будет способ сделать это Eloquent / Laravel?

Примечание: В реальном примере, который я разрабатываю, Name уникален.

Использование Laravel 7.

1 Ответ

1 голос
/ 10 июля 2020

Вы должны использовать идентификатор пользователя для идентификации каждой строки результатов

@foreach($people as $person)
    <input type="text" name="users[$person->id][name]" class="form-control" value="{{ $person->name }}">
    <input type="text" name="users[$person->id][age]" class="form-control" value="{{ $person->age }}">
@endforeach

Вы получите следующий запрос:

[
    "users" => [
        1 => [
            'name' => 'John',
            'age' => 20
        ],
        2 => [
            'name' => 'Jack',
            'age' => 29
        ]
    ]
]
...