Как вставить несколько значений

Привет всем, я новичок в 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');
Другие вопросы по тегам