Ошибка Неопределенное смещение: 5 при множественной вставке Laravel 6 - PullRequest
0 голосов
/ 23 октября 2019

Я хочу создать систему заказов в ресторане, где официант может разместить более 1 заказа в меню еды,

Я попытался сделать несколько вставок, но произошла ошибка, подобная этой

Undefined offset: 5

Мой контроллер выглядит так:

foreach ($request->menu_id as $item) {
    $data_item = array('menu_id' => $request->menu_id[$item],
        'order_id'=>$request->order_id[$item],
        'qty'=>$request->qty[$item],
        'subtotal'=>0 );
     Order_detail::insert($data_item); 

Мой взгляд такой:

<div class="panel panel-headline" id="keterangan">
    <form action="{{url('pelayan/order/detailorder')}}" method="POST" autocomplete="off" id="form-detail">
        @csrf
        <div class="panel-heading" id="judul-keterangan">

        </div>
        <hr>
        <div class="panel-body" id="detailorder">
            <div class="form-group">
                <label for="menu_id">Choose Your Food</label>
                <select class="form-control text-uppercase menu_id" name="menu_id[]">
                    <option>Choose Your Food</option>
                    @foreach($menu as $m)
                        <option value="{{$m->id}}">{{$m->name}}</option>
                    @endforeach
                </select>
                <input type="text" name="qty[]" class="form-control qty" placeholder="Silahkan Masukkan Jumlah Menu">
             </div>
            <div id="tambahorder">

            </div>
            <button type="button" class="btn btn-success" id="tambah">Tambah Pesanan</button>
            <button type="button" class="btn btn-primary" id="simpanorder">Submit</button>
        </div>
    </form>
</div>

Я не могу вставить, как вставить несколько строк в Laravel.

Ответы [ 3 ]

0 голосов
/ 23 октября 2019
foreach ($request->menu_id as $item) {
    $data_item[] = [
        'menu_id' => $request->menu_id[$item] ?? 0,
        'order_id' => $request->order_id[$item] ?? 0,
        'qty' => $request->qty[$item] ?? 0,
        'subtotal' => 0
    ];
}

Order_detail::insert($data_item);
0 голосов
/ 23 октября 2019

Вы передаете значение $item является значением. Это означает, что значение может быть любым.

Поэтому передайте $key, чтобы получить данные из другого массива. Я изменил ваш код и поместил его ниже, он может вам помочь.

$orders = $request->order_id;
$qtys = $request->qty;
$menus = $request->menu_id;

foreach ($request->menu_id as $key => $value) {
        $data_item = array('menu_id' => $menus[$key],
                    'order_id'=>$orders[$key],
                    'qty'=>$qtys[$key],
                    'subtotal'=>0 );
        Order_detail::insert($data_item); 
}
0 голосов
/ 23 октября 2019

похоже, что вы используете foreach ($ arr как $ value) , поэтому $ item это значение, а не ключ .. и если значение больше, чем ключ, то офсайдundefined ..

пример:

  • ваш идентификатор меню 1,2,3,4,5,6
  • ваш номер 5
  • поэтому, если вы выберете id 5, этот код $ request-> qty [$ item] означает $ request-> qty [5]
  • , и будет напечатана ошибкаНеопределенное смещение: 5, потому что только ваш кол-во [0,1,2,3,4]

возможно, вы можете попробовать foreach ($ arr как $ key => $ value) и замените $ request-> qty [$ item] на ключ, а не на значение.

, или вы можете использовать переменную, начинающуюся с 0, и использовать ее как приращение ..

РЕДАКТИРОВАТЬ:

где ваш код заказа ??

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