转换数组到字符串控制器
这是控制器:转换数组到字符串控制器
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