使用多个 ID 更新枢轴 table

update pivot table with multiple ids

$user = App\User::find(1);

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

这是我们在更新数据透视表时使用的 table。但我的 table 中有两个与 $roleId 相同的值。我只想更新其中一个。我们该怎么做?

例如;这是我的 sql table

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

这是另一个更好解释的支点table:

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

在一个订单中我有多个产品。 任何产品都可以具有多种功能。 我试图在一个订单中保存具有不同功能的相同产品的数据库,问题从这里开始,它不适用于此命令:

$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
                        ));
      }    

试试这个来更新映射 table。

$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');

我用这种方法解决了问题并且有效...如果您能找到其他解决方案,请在此处分享... 在我的商店功能中;

 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]] );

        }