Как вставить несколько значений
Привет всем, я новичок в Laravel, я хочу знать, как мне вставить множественное значение в таблицу, например, у меня есть таблица order_detail в моей базе данных, и она имеет order_id, product_id, price и total,
Я хочу вставить несколько значений, поэтому я создаю форму, как это, которое может быть добавлено с помощью JavaScript
<?php for($x = 1;$x <=2; $x++){ ?>
{{ Form::text('', $x]) }}
{{ Form::text('pj[$x]order_id') }}
{{ Form::text('pj[$x]product_id) }}
{{ Form::text('pj[$x]price) }}
{{ Form::text('pj[$x]total) }}
{{ Form::submit('insert!') }}
<?php } ?>
а затем я пытаюсь что-то подобное в моем OrderDetailController
$inputs = Input::get('pj');
if(DB::table('order_detail')->insert($inputs)){
return Redirect::route('admin.order_detail.index')
->with('message','success');
}
return Redirect::back()
->with('message','something went wrong')
->withInput();
но я получаю только 1 значение из моего ввода, который является последним
PS: я впервые задаю вопрос на этом форуме, поэтому, если вам нужна какая-либо информация, не стесняйтесь спрашивать меня, и извините за мой плохой английский, спасибо заранее!
3 ответа
Спасибо!! действительно спасибо вам обоим. здесь я объединяю свой код со ссылкой из вашего кода
моя форма
@for($x = 1; $x <=2; $x++)
{{ Form::text('', $x]) }}
{{ Form::text('pj['. $x .'][order_id]') }}
{{ Form::text('pj['. $x .'][product_id]') }}
{{ Form::text('pj['. $x .'][price]') }}
{{ Form::text('pj['. $x .'][total]') }}
@endfor
{{ Form::submit('insert!') }}
и вот моя функция
$pj = Input::get('pj');
foreach($pj as $order) {
if(DB::table('order_detail')->insert($order)) {}
else {
return Redirect::route('admin.order_detail.index')->with('message','failed');
}
}
return Redirect::route('admin.order_detail.index')->with('message','success');
Во-первых, у вас есть опечатка в коде, это:
{{ Form::text('pj[$x]product_id) }}
должно быть:
{{ Form::text('pj[$x]product_id') }}
Это создает ввод текста:
<input name="pj1product_id" type="text">
Подобное имя вы должны проанализировать в PHP, но вы можете использовать массив полей формы.
Не проверенный пример:
@for($x = 1;$x <=2; $x++)
{{ Form::text('', $x) }}
{{ Form::text('pj[][order_id]') }}
{{ Form::text('pj[][product_id]') }}
{{ Form::text('pj[][price]') }}
{{ Form::text('pj[][total]') }}
@endfor
{{ Form::submit('Insert') }}
И PHP:
$pj = Input::get('pj');
foreach($pj as $key=>$order) {
DB::table('order_detail')->insert($order);
}
Можете ли вы распечатать свой вклад? Я проверю. Или попробуйте этот код:
$inputs = Input::get('pj');
foreach($inputs as $input){
if(DB::table('order_detail')->insert($input)){}
else{
return Redirect::back()
->with('message','something went wrong')
->withInput();
}
}
Redirect::route('admin.order_detail.index')
->with('message','success');