我正在使用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等于范围内通过参数的产品 我该怎么办?
答案 0 :(得分:1)
如果要过滤关系模型中的数据,请使用whereHas()
。虽然我还没有测试过,但请尝试一下
Product::whereHas('productcategories', function ($query) use($id) {
$query->cp($id);
})
->orderBy('created_at','DESC')->get()