转换数组到字符串控制器

2019年7月6日 39点热度 0条评论 来源: Jane Doe

这是控制器:转换数组到字符串控制器

public function paidCount($booking_id) { 
    $book = \App\ EventBookings::where('booking_id', '=', $booking_id) - > get(); 
    if ($book - > count() > 0) { 
     $cha = \App\ EventBookingCharges::where('booking_id', '=', $book[0] - > booking_id) - > where('charge_key', 'LIKE', 'contribution') - > where('status', 'LIKE', '1') - > get(); 
     if ($cha - > count() > 0) { 
      $meta = \App\ EventBookingsMeta::where('booking_id', '=', $cha[0] - > booking_id) - > where('meta_key', 'LIKE', 'used_coupon') - > value('meta_value'); 
      if ($meta - > count() > 0) { 
       return\ App\ Coupon::where('coupon_id', '=', $meta[0] - > coupon_id) - > increment('no_paid'); 
      } 
     } 
    } 
} 

这里这部分的问题是:

$meta = \App\EventBookingsMeta::where('booking_id', '=', $cha[0]->booking_id)->where('meta_key', 'LIKE', 'used_coupon')->value('meta_value'); 
if ($meta->count() > 0) { 
    return \App\Coupon::where('coupon_id', '=', $meta[0]->coupon_id)->increment('no_paid'); 

meta_value在我的数据库是一个数组,所以这正是它看起来像内排used_coupon

used_coupon   [1]

used_coupon   [1,2,3]

的如果($meta->count() > 0)不会读取为一个整数,因此会导致错误。


===========解决方案如下:

我认为你不是将meta_value保存为一个数组,它存储为一个字符串。

您需要为保存meta_value的列做serialize()unserialize()

所以,当你正在保存的meta_value店作为serialize($meta_value_array) ,当你检索使用unserialize($meta_value)会给你meta_value作为array.And在数据库领域meta_value的数据类型应为文本。

推荐这个https://stackoverflow.com/a/21663077/4584028

    原文作者:Jane Doe
    原文地址: https://stackoverflow.com/q/40375155
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。