【发布时间】:2020-10-28 14:10:29
【问题描述】:
我有一个购物车表,可以在其中保存所有客户订单。
+--------------------------------------------- --------------------------------+
|编号 |用户 ID |产品 | created_at |更新_at |删除_at |
+--------------------------------------------- --------------------------------+
当用户软删除时,我们想软删除他卡片中的所有项目
当用户想要恢复时,我们想要恢复上次软删除的那些项目
我可以实现它。
这是我代码中的还原函数:
public function revertBackDeletedItems(Request $request)
{
$user = apiGetUser();
if ($user == null) {
return apiAbort(401);
}
$purchaseCartCount = $user->cart()->onlyTrashed()->count();
if ($purchaseCartCount == 0) {
return [
'success' => false,
'message' => 'no items in card '
];
}
$purchaseCartDateTimeInLatestDelete = $user->cart()->onlyTrashed()->orderBy('id', 'desc')->first()['deleted_at'];
$purchaseCarts = PurchaseCart::onlyTrashed()->where('user_id', $user->id)->where('deleted_at', $purchaseCartDateTimeInLatestDelete)->get();
foreach ($purchaseCarts as $key => $purchaseCart) {
$purchaseCart->restore($purchaseCart->id);
}
return ['success' => true];
}
这是只删除上次删除的项目的功能吗?
public function deleteLastTrashed(Request $request)
{
$user = apiGetUser();
if ($user == null) {
return apiAbort(401);
}
$purchaseCartCount = $user->cart()->onlyTrashed()->count();
if ($purchaseCartCount == 0) {
return [
'success' => false,
'message' => 'no items in card '
];
}
$purchaseCartDateTimeInLatestDelete = $user->cart()->onlyTrashed()->orderBy('id', 'desc')->first()['deleted_at'];
$purchaseCarts = PurchaseCart::onlyTrashed()->where('user_id', $user->id)->where('deleted_at', $purchaseCartDateTimeInLatestDelete)->get();
foreach ($purchaseCarts as $key => $purchaseCart) {
$purchaseCart->forceDelete($purchaseCart->id);
}
return ['success' => true];
}
我怎样才能更好地删除_at?
这不是干净的代码吗?
我需要更好的方法来实现这个算法
【问题讨论】:
标签: laravel laravel-7 soft-delete