转换数组到字符串控制器

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

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

以上是 转换数组到字符串控制器 的全部内容, 来源链接: utcz.com/qa/264945.html

回到顶部