2016-11-09 33 views
0

任何人都可以告訴我這段代碼中缺少什麼?該代碼只能看到陣列上的第一個

我希望它增加所有陣列上的優惠券,但只增加了第一個

這是控制器

public function paidCount($user_id) { 
    $meta = \App\EventBookingsMeta::where('user_id', '=', $user_id)->where('meta_key', 'LIKE', 'used_coupons')->value('meta_value'); 
     if ($meta) { 
     $decode = json_decode($meta); 
     if (count($decode) > 0) { 
      foreach($decode as $coupon) { 
      return \App\Coupon::find($coupon)->increment('no_paid'); 
      } 
     } 
    } 
    } 

這就是我的「元表」的模樣

user_id meta_key   meta_value 
    1   used_coupons  [3,5,9] 
    2   used_coupons  [7, 8] 

,這是 「優惠券表」

coupon_id no_paid 
    3   1 
    5   0 
    7   1 
    8   0 
    9   0 
只有

3和7遞增

+5

你''你的循環foreach'裏面return'ing所以只在第一次迭代會發生。刪除'返回'位。 –

+0

謝謝@BenSwinburne –

回答

3

foreach環取出return聲明。在第一次迭代中調用回報將突破paidCount

請注意下例中刪除的返回值。

public function paidCount($user_id) { 
    $meta = \App\EventBookingsMeta::where('user_id', '=', $user_id)->where('meta_key', 'LIKE', 'used_coupons')->value('meta_value'); 
     if ($meta) { 
     $decode = json_decode($meta); 
     if (count($decode) > 0) { 
      foreach($decode as $coupon) { 
       \App\Coupon::find($coupon)->increment('no_paid'); 
      } 
     } 
    } 
    } 
+0

非常感謝 –

相關問題