2017-10-18 7 views
0

データベースに動的フィールドを追加する際に問題が発生しました。すべての値を返すと、値を入力しますが、データベースに追加しようとすると500エラーが発生します。 これは私のダイナミックなフィールドです:DBに動的フィールドを追加する方法Lavavel

var i = 1; 
    $('#add_field').click(function(){ 
    i++; 
    $('#dynamic_field').append('<tr id="row'+i+'"><td class="col-md-5"><textarea class="name borders table-control" type="text" rows="1" cols="45" name="name[]"></textarea></td><td class="col-md-2"><input class="borders table-control price" type="text" name="price[]"></td><td class="col-md-2"><input class="borders table-control qty" type="text" name="qty[]"></td><td class="col-md-2"><input class="form-control total" type="text" name="total[]"></td><td class="text-center"><span id="'+i+'" style="color: red" name="remove" class="btn_remove"><i class="fa fa-times" aria-hidden="true"></i></span></td></tr>'); 

}); 

これは私のAjax呼び出しです:

$(document).on('change','.qty',function(){ 


    var id = $("#inv_id").val(); 
    var tr = $(this).closest('tr'); 
    var name = tr.find(".name").val(); 
    var price = tr.find(".price").val(); 
    var qty = tr.find(".qty").val(); 
    var total = tr.find(".total").val(); 

    $.ajax({ 
     type: "POST", 
     url: '/product', 
     data: {'id': id, 'name': name, 'price': price, 'qty': qty, 'total': total, '_token':$('input[name=_token]').val()}, 
     success: function(data) { 

      console.log(data); 

     }, 
      error: function(data){ 
      alert("fail"); 

      } 
    }); 
}); 

そして、ここでは私のコントローラです:

public function product(Request $request){ 

    $products = $request->all(); 

     $id = $products['id']; 
     $name = $products['name']; 
     $price = $products['price']; 
     $qty = $products['qty']; 
     $total = $products['total']; 

    for($i = 0; $i < count($name); $i++) { 


      $prod = new Product(); 
      $prod->invoice_id = $id; 
      $prod->name = $name[$i]; 
      $prod->price = $price[$i]; 
      $prod->qty = $qty[$i]; 
      $prod->total = $total[$i]; 
      $prod->save(); 

    } 


    return response()->json($prod->toArray(), 200); 

} 

これは

protected $fillable = [ 'invoice_id', 'name', 'qty', 'price', 'total' ]; 
私の製品モデルであります

I Product :: create($ request-> all)を試しましたが、実際に私が知っているすべてを試しました。私はあなたが人を助ける必要がある理由です。

+0

は、私たちは(http://chat.stackoverflow.com/rooms/157032/discussion-between-ljubadr-and-denisson-de-souza)[チャットでこの議論を続ける]してみましょう。 – ljubadr

+0

@ ljubadr、私は最終的にコードを修正することができました。私のコードはうまくいきました。私がしなければならなかったのは、ページをリフレッシュすることでした。とてもシンプルでしたが、長い時間がかかりました。ああ、私は学んでいる。ここにコードを掲載します。 –

答えて

0

私がしなければならなかったことは、ページをリフレッシュすることでした。

public function product(Request $request){ 
$prod = new Product(); 
$prod->invoice_id = $request->id; 
$prod->name = $request->name; 
$prod->price = $request->price; 
$prod->qty = $request->qty; 
$prod->total = $request->total; 
$prod->save(); 
return response()->json($prod->toArray(), 200); 
} 

$(document).on('change','.qty',function(){ 

    var name = []; 
    var price = []; 
    var qty = []; 
    var total = []; 


    var id = $("#inv_id").val(); 
    var tr = $(this).closest('tr'); 
    name = tr.find(".name").val(); 
    price = tr.find(".price").val(); 
    qty = tr.find(".qty").val(); 
    total = tr.find(".total").val(); 


    $.ajax({ 
     type: "POST", 
     url: '/product', 
     data: {id: id, name: name, price: price, qty: qty, total: total, '_token':$('meta[name="csrf-token"]').attr('content')}, 
     success: function(data) { 
      $('#form').load(location.href + ' #form'); 
      location.reload(); 
     } 

    }); 
}); 
関連する問題