$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);
这是我们在更新数据透视表时使用的内容。但我在表格中有两个与$roleId
相同的值。我想只更新其中一个。我们怎么能这样做?
例如;这是我的sql表
userId -- roleId -- attributeId
1 1 1
1 1 2
这是另一个更好地解释的数据透视表:
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
));
}
答案 0 :(得分: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');
答案 1 :(得分: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]] );
}