dongyange1101 2019-02-14 13:28
浏览 52
已采纳

Laravel 5.4:从一个表单中插入每个项目作为行

I have a form which insert multiple products here it's my form

{!! Form::open(['route'=>'export-list.store']) !!}
        @foreach($orderis as $orderi)
           {!! Form::hidden('product_id[]', $orderi->productId->id) !!}
           {!! Form::hidden('quantity[]', $orderi->quantity) !!}
               <tr>
                  <td>{!! $sn++ !!}</td>
                  <td width="5%">
                  {!! Html::image('images/products/'. $orderi->productId->image, 'thumbs-'.$orderi->productId->name, ['height' => 70]) !!}
                  </td>
                  <td>{!! $orderi->product_name !!}</td>
                  <td>{!! $orderi->quantity !!}</td>
                  <td>
                     <div class="col-md-5">
                        <div class="form-group-inner">
                       {!! Form::text('inventory[]', null, ['class'=>'form-control']) !!}
                        </div>
                     </div>
                 </td>
                 <td>{!! $orderi->productId->price !!}</td>
                 <td>{!! $orderi->productId->price * $orderi->quantity !!}</td>
               </tr>
           @endforeach
               <tr>
                 <td colspan="9">{!! Form::submit('Submit', ['class'=>'btn btn-primary']) !!}</td>
               </tr>
{!! Form::close() !!}

The end results is an array.

array:4 [▼
  "_token" => "cpua1RzKKP4vvklB99HafAdMQ65TSxOWQVQ5r3ye"
  "product_id" => array:3 [▼
    0 => "856"
    1 => "857"
    2 => "858"
  ]
  "quantity" => array:3 [▼
    0 => "9"
    1 => "8"
    2 => "2"
  ]
  "inventory" => array:3 [▼
    0 => "8"
    1 => "2"
    2 => "6"
  ]
]

and here is my controller

public function store( Request $request ) {
        $input = $request->all();

        //Check for the needed quantity
        $quantity        = $input['quantity'];
        $inventory       = $input['inventory'];
        $needed_quantity = $quantity - $inventory;
        //Get the product information
        $productInfo = ( new Product() )->find( $input['product_id'] );
        $totalPrice  = $productInfo->price * $needed_quantity;


        ( new PurchaseOrder() )->create( [
            'product_id'      => $input['product_id'],
            'product_name'    => $productInfo->translate( 'ar' )->name,
            'product_image'   => $productInfo->image,
            'needed_quantity' => $needed_quantity,
            'unit_price'      => $productInfo->price,
            'total_price'     => $totalPrice,
            'barcode'         => $productInfo->barcode,
        ] );

        return redirect()->route( 'order-detail.index' )->with( 'status', 'Created successfully' );
    }

How to insert each item as row in my table

  • 写回答

1条回答 默认 最新

  • dongzhang1839 2019-02-17 12:36
    关注

    Many thanks to @SNAPEY who helped me to fix my issue

    it was more easier when I named my fields differently... as

    @foreach($orderis as $orderi)
            {!! Form::hidden('products[' . $loop->index . '][product_id]', $orderi->productId->id) !!}
            {!! Form::hidden('products[' . $loop->index . '][quantity]', $orderi->quantity) !!}
            {!! Form::text('products[' . $loop->index . '][inventory]', null, ['class'=>'form-control']) !!}           
    @endforeach
    

    so the end results was something like this

    array:2 [▼
      "_token" => "muw3phvtnjnJnjBYNqbp0A5f6Pk5St1BkydKPGG7"
      "products" => array:3 [▼
        0 => array:3 [▼
          "product_id" => "856"
          "quantity" => "9"
          "inventory" => "2"
        ]
        1 => array:3 [▼
          "product_id" => "857"
          "quantity" => "8"
          "inventory" => "3"
        ]
        2 => array:3 [▼
          "product_id" => "858"
          "quantity" => "2"
          "inventory" => "4"
        ]
      ]
    ]
    

    and it was very easy to manage the data in my controller with foreach like this

    $eachProducts = $input['products'];
    
    foreach ( $eachProducts as $each_product ) {
        $quantity        = $each_product['quantity'];
        $inventory       = $each_product['inventory'];
        ......
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染