如何在关系中使用laravel Scope?

时间:2019-03-03 16:30:02

标签: laravel scope

我正在使用laravel 我有两种型号

产品

class Product extends Model
{
    public function productcategories(){
      return $this->hasOne('App\Product\Productcategorie','CategoryID','ProductCategoryId');
    }    
}

和产品类别

class Productcategorie extends Model
{
  protected $primaryKey = 'CategoryID';

  public function product(){
    return $this->belongsToMany('App\Product\Product','ProductCategoryId','CategoryID');
  }

  public function scopeCp($query,$id){
    return $query->where('categoryparent_id', '=', $id);
  }
}

产品模型具有范围Cpscope

我有带有功能的ProductController

function productCatgoryPaFilter(Request $request){
  $categories=  Categoryparent::with('categories')->get();
  $id=$request->id;
  return  $product = Product::with('productcategories')->with('productoption.option')->orderBy('created_at','DESC')->get();
}

我想获得所有类别parent_id等于范围内通过参数的产品 我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果要过滤关系模型中的数据,请使用whereHas()。虽然我还没有测试过,但请尝试一下

Product::whereHas('productcategories', function ($query) use($id) {
    $query->cp($id);
})
->orderBy('created_at','DESC')->get()