![](/img/trans.png)
[英]count(): Parameter must be an array or an object that implements Countable on laravel
[英]Laravel 8: count(): Parameter must be an array or an object that implements Countable
我正在使用 Laravel 8 制作支付系統,因此我將其編碼為PaymentController
:
class PaymentController extends Controller
{
public function payment()
{
$cart = Cart::instance('cart-roocket');
$cartItems = $cart->all();
if($cartItems->count()) {
$price = $cartItems->sum(function($cart) {
return $cart['product']->price * $cart['quantity'];
});
$orderItems = $cartItems->mapWithKeys(function($cart) {
return [$cart['product']->id => [ 'quantity' => $cart['quantity']] ];
});
$order = auth()->user()->orders()->create([
'status' => 'unpaid',
'price' => $price
]);
$order->products()->attach($orderItems);
$token = config('services.payping.token');
$res_number = Str::random();
$args = [
"amount" => 1000 ,
"payerName" => auth()->user()->name,
"returnUrl" => route('payment.callback'),
"clientRefId" => $res_number
];
$payment = new \PayPing\Payment($token);
try {
$payment->pay($args);
} catch (\Exception $e) {
throw $e;
}
//echo $payment->getPayUrl();
$order->payments()->create([
'resnumber' => $res_number,
'price' => $price
]);
$cart->flush();
return redirect($payment->getPayUrl());
}
// alert()->error();
return back();
}
public function callback()
{
}
}
但是每當我嘗試打開路線payment
時,我都會看到此錯誤:
count():參數必須是一個數組或者一個實現了Countable的object
那么這里出了什么問題? 我該如何解決這個錯誤?
我真的很感激你們的任何想法或建議......
提前致謝。
用if (!$cartItems->isEmpty())
替換你的if($cartItems->count())
))
當你運行all()
方法時,它返回一個集合實例,而不是一個數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.