Laravel добавить динамические поля ввода

Я хочу вставить динамические поля в БД. Я использую следующий код, но он не работает, как я ожидаю.

<html>
<input id="reporting" type="text" value="salman" name="reporting[]">
<input id="reporting" type="text" value="ankur" name="reporting[]">
</html>

<?php

$report = Input::get('reporting');

for($i=0; $i<=count($report);$i++)
{
$news = new Reporting();
$news->user_id = 1;
$news->reporting = $report;
$news->save();
}
?>

ожидаемый результат:

user_id || reporting
1           Salman
1           Ankur

Ребята, пожалуйста, помогите мне исправить это.

1

Решение

Как $report является массивом, текущий элемент которого может быть получен с [] обозначения:

$report = Input::get('reporting');

for($i=0; $i<=count($report);$i++)
{
$news = new Reporting();
$news->user_id = 1;
$news->reporting = $report[$i];    // here add [$i]
$news->save();
}
1

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

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

<html>
<body>
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<form action="/" method="post">
{{csrf_field()}}
<input id="reporting" type="text" value="salman" name="reporting[]">
<input id="reporting" type="text" value="ankur" name="reporting[]">
<button type ="submit"> Send </button>
</form>
</body>
</html>

Поймать данные на бэкэнде:

public function store()
{
$fields = collect(Input::get('reporting'));

$fields->map(function($value, $key){

return Reporting::create([

'user_id'=>1,

'reporting'=>$value,
]);

});

return redirect('/')->with('success', 'Action was successful');
}

Это произведет данные в этом формате:

user_id || reporting
1           Salman
1           Ankur

Примечание: проверено, работает правильно!

0


Курсы программирования от Skillbox. Черная пятница!
Подробнее >>>
×