首页 > 解决方案 > 当条件限制为 2 时执行代码 3 次

问题描述

我有桌子CouponCoupon_usages.

$userTimesRedeemed = CouponUsage::where('coupon_id', $coupon->id)->where('user_id', $user_id)->get();

if ($coupon->usage_limit_per_user<$userTimesRedeemed->count()) {
    return response()->json([
        'is_valid' => false,
        'message' => 'Coupon has already been used max number of times.'
    ], 422);
}

最初Coupon_usages表是空的,所以添加时:

$coupon->usage_limit_per_user = 2; 

并运行它将执行 3 次的代码。

如何避免这个错误?

注意:最初Coupon_usages表格是空的。

标签: laravel

解决方案


$userTimesRedeemed = CouponUsage::where('coupon_id', $coupon->id)->where('user_id', $user_id)->get();

if ($coupon->usage_limit_per_user <= $userTimesRedeemed->count()) {
    return response()->json([
        'is_valid' => false,
        'message' => 'Coupon has already been used max number of times.'
    ], 422);
}

添加<=您的条件,因为如果您的计数为 2 并且限制为 2,那么

if($coupon->usage_limit_per_user<$userTimesRedeemed->count()) // it will return false

因为 2 不小于 2 你应该检查小于或等于 2


推荐阅读