首页 > 解决方案 > Laravel 调用未定义的方法 Query\Builder

问题描述

我有属于商店模型的产品模型。商店可以是活跃的,也可以是活跃的,所以我只需要从活跃的商店获取产品。所以我添加了这个方法

public function isActiveShop(){
    return $this->where($this->shop->status,'active');
}

从我的控制器

$prodcuts = Product::where('id',$rawArray)->isActiveShop()->get();

我得到这个错误

“调用未定义的方法 Illuminate\Database\Query\Builder::isActiveShop()”

标签: laravel

解决方案


您必须使用范围whereHas()

public function scopeIsActiveShop($query) {
    return $query->whereHas('shop', function($query) {
        $query->where('status', 'active');
    });
}

推荐阅读