首页 > 解决方案 > 错误未定义的偏移量:多次插入 Laravel 6 中的 5

问题描述

我想制作一个餐厅点餐系统,服务员可以在食物菜单中放置超过 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 中插入多行。

标签: jqueryajaxlaravel

解决方案


看起来您使用foreach($arr as $value) 所以$item是值,而不是键..如果值大于键,则越位未定义..

例子 :

  • 您的菜单 ID 是 1,2,3,4,5,6
  • 你的数量是 5
  • 因此,如果您选择 id 5,则此代码$request->qty[$item]表示$request->qty[5]
  • 它会打印错误 Undefined offset: 5 因为你的数量只有 [0,1,2,3,4]

也许您可以尝试foreach($arr as $key => $value)并将$request->qty[$item]更改为键,而不是值。

或者您可以使用从 0 开始的变量,并将其用作增量。

编辑 :

你的order_id在哪里??


推荐阅读