2016-08-17 5 views
1
$user = App\User::find(1); 

$user->roles()->updateExistingPivot($roleId, $attributes); 

これはピボットテーブルを更新するときに使用します。私のテーブルには$roleIdという2つの同じ値があります。私はそれらのうちの1つだけを更新したい。どうしたらいい?複数のIDを持つピボットテーブルを更新する

たとえば、

order_id --- product_id --- feature_id --- product_quantity 

ために、私は複数の製品を持っている:これは、これはよりよい説明別のピボットテーブルで私のSQLテーブル

userId -- roleId -- attributeId 
    1   1   1 
    1   1   2 

です。 いずれの製品も複数の機能を持つことができます。 私がために、データベースに異なる機能を持つ同じ製品を保存しようとしていますし、問題はここから始まり、それがこのコマンドでは動作しません:

$order = Order::create($request->all()); 
     $product_list = $request->input('product_list'); 
     $feature_list = $request->input('feature_list'); 
     $product_quantity = $request->input('product_quantity'); 

     /* attach pivot table */ 
     $order->product()->attach($product_list); 

     /* get the product list as array */    
     foreach($product_list as $key => $product_id) 
     { 
     $order->product()->updateExistingPivot($product_id, array(
         'feature_id' => $feature_list[$key], 
         'product_quantity' => $product_quantity[$key], // product_quantity is array 
         )); 
     }  

答えて

0

が、私はこのようことによって問題を処理し、それはあなたが別の解決策を見つけることができた場合は、ここで共有してください...動作します...私の店の機能で 。

public function store(OrderRequest $request) 
    { 
     $order = Order::create($request->all()); 
     $product_row = $request->input('product_row'); 
     $product_list = $request->input('product_list'); 
     $feature_list = $request->input('feature_list'); 
     $product_quantity = $request->input('product_quantity'); 
     $product_status = $request->input('product_status'); 

     /* attach pivot table */ 
     foreach($product_row as $key=>$value){ 

     $order->product()->attach($product_list[$key], ['feature_id'=>$feature_list[$key], 'product_quantity'=>$product_quantity[$key], 'product_status'=>$product_status[$key]]); 

     } 
} 

及び更新機能:

public function update(Order $order, OrderRequest $request) 
    { 
     $order->update($request->all()); 

     $product_row = $request->input('product_row'); 
     $product_list = $request->input('product_list'); 
     $feature_list = $request->input('feature_list'); 
     $product_quantity = $request->input('product_quantity'); 
     $product_status = $request->input('product_status'); 
     /* clear pivot table for the current order */ 
     $order->product()->detach(); 
     /* attach pivot table */ 
     foreach($product_row as $key=>$value){ 

     $order->product()->attach($product_list[$key], ['feature_id'=>$feature_list[$key], 'product_quantity'=>$product_quantity[$key], 'product_status'=>$product_status[$key]]); 

     } 
0

は、マッピングテーブルを更新するために、これを試してみてください。

$user = App\User::find(1); 
      if(empty($user->id) === false) 
      { 
       $user->roles()->detach(); 
       $user->roles()->attach($request->roles); 
       return redirect()->route('users')->with('success', 'User has been updated successfully'); 
      } 

     return redirect()->route('users')->with('error', 'Unable to update User. Please try again later'); 
+0

Iは、詳細な例を追加しました。それはより良い問題を説明することができます –

+0

あなたは2つのテーブルにそれを分けることができます。 order_id --- product_idとproduct_id ---両方のbelongsToMany関係を持つfeature_id – Parithiban

+0

私はそれをシナリオで説明できます。ユーザーには複数の役割があり、各役割には複数の権限があります。したがって、1つのテーブル内のユーザーロールと別のテーブル内のロール – Parithiban

関連する問題