怎么做“如果firstOrNew然后增加”?

时间:2016-10-30 01:22:52

标签: php laravel

我目前正在建立一个网站,其中包含一个表格,用于计算用户使用优惠券的次数。

这是我用来增加的线。它运行良好,但每次刷新页面时都会增加。

\App\Coupon::where('coupon_id','=',$coupon[0]->coupon_id)->increment('no_paid');

我希望这个只增加一次,即使页面已刷新多次。请帮帮我:)。

1 个答案:

答案 0 :(得分:1)

您可以使用会话。这是一个例子(使用Laravels全局会话助手):

if (!session()->has('coupon_used')) {
    \App\Coupon::where('coupon_id','=',$coupon[0]->coupon_id)->increment('no_paid');
    session()->put('coupon_used', true);
}

首先检查会话是否存在。如果没有,则运行代码并设置会话。第二次加载页面时,将设置会话并且代码将不会运行。

替代地

上述代码仅允许每个用户会话使用一张优惠券,无论他们是否尝试使用不同的优惠券ID。如果你想添加相同的功能,同时允许不同的优惠券(能够增加一次/优惠券ID),那么你可以这样做:

if (!session()->has('coupon_' . $coupon[0]->coupon_id)) {
    \App\Coupon::where('coupon_id','=',$coupon[0]->coupon_id)->increment('no_paid');
    session()->put('coupon_' . $coupon[0]->coupon_id, true);
}

这是相同的事情,但只为该优惠券ID设置会话(因为它动态创建会话名称以附加ID)。

相关问题