如何使用数据透视表从数据库中获取产品并在laravel中对检索到的产品运行另一个查询?

时间:2018-08-30 21:03:49

标签: laravel eloquent

我有一个产品表和一个类别表以及category_product表。我想获取特定类别的产品,然后使用属于产品表的列对检索到的产品运行其他查询。例如,所有属于移动类别且价格低于1000 $的产品。我怎样才能做到这一点?第二个问题:如何在其中添加分页?

更新:已解决

带有这样的查询:

$products = Category::where(['title' => 'mobile'] )->first()->pictures()->where('price', '<' , 1000)->latest()->paginate(10);

1 个答案:

答案 0 :(得分:0)

您有两种不同的选择:

Category::whereTitle('mobile')->with(['pictures' => function ($q) {
  $q->where('price', '<' , 1000)->latest();
}])->paginate(10);

或者您可以在Category模型中定义范围,例如

// @Category Model

public function cheapPictures() {
   return $this->hasMany(Picture::class)->where('price', '<' , 1000);
}

您还可以使用本地范围https://laravel.com/docs/5.6/eloquent#local-scopes