为什么即使我在laravel中使用updateorcreate方法,仍然重复数据



为什么即使我在laravel中使用updateorcreate方法,仍然重复数据抱歉我英语不好这是我的代码:

$customerId = Auth::id();
$unpaid = 'unpaid';
$cartTables = CartModel::where(['user_id' => $customerId, 'cart_status' => $unpaid])->get();
$addReward = array();
foreach( $cartTables as $key => $value) {
$addReward[] = $request['product_id'][$key];
}   
$datas = $request->product_id;
if(count($cartTables) == 0 || $addReward != $datas) {
foreach ($request->product_id as $key => $value) {
$cartData = array(                 
'user_id' => $customerId,
'product_id' => $request['product_id'][$key],
'product_image' => $request['product_image'][$key],
'product_name' => $request['product_name'][$key],
'product_quantity' => $request['product_quantity'][$key],
'product_price' => $request['product_price'][$key],
'cart_created_at' => new DateTime(),
'cart_status' => 'unpaid',

);  
CartModel::updateOrCreate($cartData);
}  
return redirect('product/cart');
}

我只想插入唯一的产品和ovewrite,如果有现有的产品。

updateOrCreate方法将两个数组作为参数:第一:更新哪个型号第二:应该用什么数据更新模型。

在您的情况下,如果您想更新特定的ID,您的代码应该是这样的(例如,不确定应该满足什么条件(:

CartModel::updateOrCreate(['product_id' => $productId], $cartData);

CartModel::updateOrCreate(['user_id' => $customerId], $cartData);

请阅读文档,它非常清楚地解释了一切:

https://laravel.com/docs/8.x/eloquent#upserts

相关内容

最新更新