Laravel调用未定义的方法Query \ Builder

时间:2018-07-13 13:47:18

标签: laravel

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

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

和我的控制器

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

我收到此错误

  

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

2 个答案:

答案 0 :(得分:0)

尝试一下:

$products = (new Product())->isActiveShop()->where('id',$rawArray)->get();

答案 1 :(得分:0)

您必须使用scopewhereHas()

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