laravel 在数组会话中调用成员函数where()

fdx2calv  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(107)

当我添加到购物车时,收到此错误

我尝试将一个产品添加到购物车中。我到处寻找答案,结果显示我只需要在函数中添加一个return语句。但是我已经有了一个return语句,它仍然不起作用。
CartService.php

public function count($key)
{
    if (!$this->has($key)) return 0;
    return $this->get($key)['quantity'];
}

public function has($key)
{
    if($key instanceof Model) {
        return ! is_null(
            $this->cart->where('subject_id' , $key->id)->where('subject_type' , get_class($key))->first()
        );
    }
    return ! is_null(
        $this->cart->firstWhere('id' , $key)
    );
}
kkbh8khc

kkbh8khc1#

我认为这个错误只是因为cart变量是一个数组而不是集合。
当你在cart变量上应用where方法时,你需要将cart变量转换为集合来应用方法。
为此,您的具有功能可能是这样的:

public function has($key)
{
    $cart = collect($this->cart);
    if($key instanceof Model) {
        return ! is_null(
            $cart->where('subject_id' , $key->id)->where('subject_type' , get_class($key))->first()
        );
    }
    return ! is_null(
        $cart->firstWhere('id' , $key)
    );
}

相关问题