2017-08-07 16 views
0

私はProduct & Priceモデルで作業しています。私の商品テーブルにはidとnameカラムがあり、pricesテーブルにはid、product_id、costとdateカラムがあります。 pricesテーブルのproduct_idは、productsテーブルのidを参照します。私のフォームは、各製品のフィールドを表示するので、ユーザーは時々価格を入力します。私の挑戦は、価格がproduct_idに対応するようにリクエストデータを処理する方法です。以下は、私は私のコードがスローこれまで当然のLaravel 5でフォーム入力フィールドとストア値を動的に追加

フォーム

<form class="form-horizontal" method="POST" action="{{ url('/home/prices') }}"> 
{{ csrf_field() }} 
@if(isset($products) && !empty($products)) 
    @foreach($products as $product) 
     <div class="form-group"> 
      <div> 
       <input type="hidden" class="form-control" name="product_id[]" value="{{ $product->id }}"> 
      </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-sm-2" for="{{ $product->name }}">{{ ucwords($product->name) }}</label> 

      <div class="col-sm-3"> 
       <input type="text" class="form-control" name="cost[]"> 
      </div> 
     </div> 
    @endforeach 
@else 
    Sorry, no product available currently. 
@endif 

<button type="submit" class="btn btn-default">Add</button> 
</form> 

PriceController

public function store(Request $request) 
{ 
//dd($request); 
foreach ($request->input('cost') as $cost) { 
    Price::create([ 
     'product_id' => $request->product_id, 
     'date' => Carbon::now(), 
     'cost' => $cost, 
     'trend' => 0 
    ]); 
} 

return redirect('/home'); 
} 

この私が要求データをダンプするとき、私は何を得る enter image description here

を書かれているコードがありますこのエラーを解決する at Builder->insertGetId(array('product_id' => array('1', '2', '3'), 'date' => object(Carbon), 'cost' => '14.05', 'trend' => 0, 'updated_at' => '2017-08-07 11:21:47', 'created_at' => '2017-08-07 11:21:47'), 'id')

どうすれば修正できますか?

答えて

1
foreach ($request->input('cost') as $key=>$cost) { 

    Price::create([ 
     'product_id' => $request->product_id[$key], 
     'date' => Carbon::now(), 
     'cost' => $cost, 
     'trend' => 0 
    ]); 
} 

あなたは全体の配列は、製品のIDで渡さなっているので、あなたが

を挿入する必要のある特定のIDを言及する必要が見ることができるように
1

あなたはこのように、入力の配列にインデックスまたはキー/値ペアの概念を使用することができます。

はこれを試してみてください、

foreach ($request->input('cost') as $key=>$cost) { 
    Price::create([ 
     'product_id' => $request->product_id[$key], 
     'date' => Carbon::now(), 
     'cost' => $cost, 
     'trend' => 0 
    ]); 
} 

これは

1 -> 14.05 
2 -> 13.75 
3 -> 12.99 

希望のようなあなたのデータを保存します分かるでしょう。

関連する問題