2017-04-14 6 views
0

Ich bin ein Laravel Anfänger. Zur Zeit lerne ich ein Inventursystem zu erstellen. Ich habe zwei Tabellen: Waren erhalten Kopf und Waren erhalten Detail.laravel multiple row in Datenbank speichern

Was kann ich tun, um das Speichern mehrerer Datensätze in der Datenbank zu ermöglichen, wenn auf die Schaltfläche zum Senden geklickt wird. Hoffe, dass jemand mir helfen wird als i = in dieser für ein paar Wochen gesteckt hatte (

Für goodsreceiveheader Tabelle habe ich das Feld von:

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

Während goodsreceivedetail Tisch, ich habe das Feld von:

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 

Meine Ansicht:

<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> 

Mein Controller:

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

zu viel Code geschrieben .. versuchen Sie, die Dokumentation zu lesen, auch in Ihrem js 'addRow' haben Sie Klinge Anweisungen in js gemischt es wird nicht funktionieren. Versuchen Sie, mit Arrays zu arbeiten, um mehrere Produkte an den Controller und dann erneut an Arrays zu übergeben, um mehrere Zeilen zu speichern. Sie müssen einige Tutorials lesen. – Gntem

+0

danke für die Antwort .. meine js addRow arbeiten, da ich eine Zeile für Benutzer hinzufügen können, um ihr Element einfügen. Der Benutzer kann auf Speichern klicken und die Daten in der Datenbank speichern. nur dass es nur eine Reihe von Daten in db statt der anderen speichert. Also, was kann ich dafür tun? Gibt es ein Tutorial, das du mir empfehlen kannst? Danke im Voraus – Nick

Antwort

0

Verwendung Insert-Funktion und Ihre Daten als mehrere Array übergeben wie wenn der Modellname dann 'User' ist unter Code

Benutzer für mehrfache Einreisen arbeiten :: einfügen (['name' => 'xyz'], ['name' => 'abc']);

Verwandte Themen