2017-04-14 98 views
0

我是laravel初學者。目前我正在學習做一個庫存系統。我有兩個表:goodsreceiveheader和goodsreceivedetail。laravel多行保存到數據庫

點擊提交按鈕後,我可以做什麼來允許多行保存到數據庫中。希望有人會幫我,我就停留在這幾個星期=(

對於goodsreceiveheader表,我有領域:

id, 
referencenumber, 
vendorid(FK), 
date, 
createdby. 

雖然goodsreceivedetail表,我有領域:

id, 
goodsreceiveheader_id(FK), 
itemid(FK), 
quantity, 
costprice. 

create.blade.php

@extends('admin.layout') 

@section('content') 
    <fieldset> 
     <legend>Create New Goods Receive</legend> 
     @include('layouts.error') 
     {!! Form::open(['url' => 'goodsreceive/save', 'method'=>'post']) !!} 
     @include('goodsreceiveheader.partial._goodsreceiveheader_form') 
     {!! Form::close() !!} 


    </fieldset> 
@endsection 

我的觀點:

<style> 
    div#gr{ 
     padding: 20px; 
     border:1px solid black; 
    } 
</style> 
<div class="container"> 
    <h2>Goods Receive</h2> 

    <hr> 

     <div id="gr" class="row" style="background-color: lightgoldenrodyellow"> 

      <div class="col-lg-4 col-sm-6"> 
       <input name="createdby" type="hidden" value="{{ Auth::user()->name }}"> 
       {!! Form::label('referencenumber', 'Reference Number:')!!} 
       <div class="form-group"> 
        <input type="text" name="referencenumber" class="form-control" placeholder="Reference Number"> 
       </div> 
      </div> 

      <div class="col-lg-4 col-sm-6"> 
        {!! Form::label('date', 'Receive Date:')!!} 
        {!! Form::date('date',null,['class'=>'form-control']) !!} 
      </div> 

      <div class="col-lg-4 col-sm-6"> 
       {!! Form::label('vendorid', 'Vendor ID:')!!} 
       <select name="vendorid" class="form-control"> 
        <option value="" selected disabled>Please Select Vendor..</option> 
        @foreach($vendors as $vendor) 
         <option value="{{$vendor->id}}">{{$vendor->vendorid}}</option> 
        @endforeach 
       </select> 
      </div> 
     </div> 
    <br> 

    <table class="table table-bordered"> 
     <thead> 
     <th>Item Barcode</th> 
     <th>Quantity</th> 
     <th>Cost Price</th> 
     <th style="text-align: center;background: #eee"> 
      <a href="#" onclick="addRow()"> 
       <i class="glyphicon glyphicon-plus"></i> 
      </a> 
     </th> 
     </thead> 
     <tbody> 
     <tr> 
      <td> 
       <select class="form-control" name="itemid"> 
        <option value="" selected disabled>Select Barcode</option> 
        @foreach($items as $item) 
         <option value="{{$item->itemid}}">{{$item->itembarcode}}</option> 
        @endforeach 
       </select> 
      </td> 
      <td><input type="text" name="quantity" class="form-control quantity"></td> 
      <td><input type="text" name="costprice" class="form-control costprice"></td> 
      <td style="text-align: center" onclick="cannotdelete()"> 
       <a href="#" class="btn btn-danger remove"> 
        <i class="fa fa-times"></i> 
       </a> 
      </td> 
     </tr> 
     </tbody> 
    </table> 

    <br> 

    <button type="submit" class="btn btn-primary pull-right">Submit</button> 

</div> 

<script type="text/javascript"> 
    function addRow() 
    { 
     var tr='<tr>'+ 
       '<td>'+ 
       '<select class="form-control" name="itemid">'+ 
       '<option value="" selected disabled>Select Barcode</option>'+ 
       '@foreach($items as $item)'+ 
       '<option value="{{$item->itemid}}">{{$item->itembarcode}}</option>'+ 
       '@endforeach'+ 
       '</select>'+ 
       '</td>'+ 
       '<td><input type="text" name="quantity" class="form-control quantity"></td>'+ 
       '<td><input type="text" name="costprice" class="form-control costprice"></td>'+ 
       '<td class="remove" style="text-align: center"><a href="#" class="btn btn-danger" onclick="deleteRow()"><i class="fa fa-times"></i></a></td>'+ 
       '</tr>'; 

     $('tbody').append(tr); 
    } 

    function deleteRow() 
    { 
     $(document).on('click', '.remove', function() 
     { 
      $(this).parent('tr').remove(); 
     }); 
    } 

    function cannotdelete() 
    { 
     alert('You cannot delete the first row!!!') 
    } 

</script> 

我的控制器:

public function save(GoodsreceiveheaderRequest $request) 
    { $data = array(
      'referencenumber'=>$request->referencenumber, 
      'vendorid'=>$request->vendorid, 
      'date'=>$request->date, 
      'createdby'=>$request->createdby, 
     ); 
     $i = DB::table('goodsreceiveheader')->insertGetId($data); 

     $goodsreceivedetail = array(
      'goodsreceiveheader_id'=>$i, 
      'itemid'=>$request->itemid, 
      'quantity'=>$request->quantity, 
      'costprice'=>$request->costprice, 
     ); 

     $s = DB::table('goodsreceivedetail')->insert($goodsreceivedetail); 

     Session::flash('message','You have successfully create goods receive.'); 

     return redirect('goodsreceive/goodsreceiveheader_list'); 
    } 
+1

張貼了太多的代碼..嘗試閱讀文檔,也在您的js'addRow'中,您有js中混合的刀片指令,它將無法工作。嘗試使用數組將多個產品傳遞給控制器​​,然後再次數組以保存多行。你需要閱讀一些教程。 – Gntem

+0

感謝您的回覆..我的js addRow工作,因爲我可以添加一行用戶插入他們的項目。用戶可以單擊保存並將數據保存到數據庫。只是它只保存一行數據而不是其他數據。那麼,我能做些什麼呢?有什麼教程可以推薦給我嗎?提前致謝 – Nick

回答

0

已解決。

public function save(GoodsreceiveheaderRequest $request) 
     { 
      $head = Goodsreceiveheader::findorNew($request->id); 
      $head->referencenumber=$request->referencenumber; 
      $head->vendorid=$request->vendorid; 
      $head->date=$request->date; 
      $head->createdby=$request->createdby; 
      if ($head->save()){ 
       $id = $head->id; 
       foreach($request->itemid as $key =>$item_id){ 
        $data = array(
            'goodsreceiveheader_id'=>$id, 
            'itemid'=>$request->itemid [$key], 
            'quantity'=>$request->quantity [$key], 
            'costprice'=>$request->costprice [$key], 
         ); 
        Goodsreceivedetail::insert($data); 
       } 
      } 
      Session::flash('message','You have successfully create goods receive.'); 

      return redirect('goodsreceive/goodsreceiveheader_list'); 
     } 
0

使用插入功能,並通過您的數據作爲多個陣列像 如果型號名稱是「用戶」,然後在下面的代碼將多次入境

用戶工作::插入([ '名稱'=> 'XYZ'],[ '名稱'=> 'ABC']);