假设我有以下表格
我可以管理简单的关系,但是我遇到了急于加载所有内容的问题。我想要做的是首先获取所有子类别的所有产品父类别(其中parent_id =类别ID)和产品价格和零售商数量的最低价格(不同product_prices.retailer_id的数量) product_specs以及评论数量和所有评论的平均评分,然后对于没有类别的子类别相同。
我的问题是零售商与产品有关,这应该通过retailer_id上的product_prices完成,并且还使用产品型号返回子类别和父类别以及其他所有产品
除了零售商和母公司类别之外,这将给我所有:
$this->data['products'] = Product::with('Category.parent', 'ProductPrice.retailer')->whereHas('ProductPrice', function($query){
$query->orderBy('price', 'asc'); // asc could be default, if so omit that
})->get();
这是我的产品型号
public function retailers(){
return $this->hasManyThrough('ProductPrice','Retailer','id','retailer_id');
}
这在我的分类模型中
public function parent()
{
return $this->hasOne('Category' , 'id' , 'parent_id');
}
这是我的ProductPrice模型
public function retailers()
{
return $this->hasMany('Retailer');
}
表
retailers
| id | name |
|----|---------|
| 1 | shop1 |
|----|---------|
| 2 | shop2 |
products
| id | category_id | name | description |
|-----|---------------|--------|---------------|
| 1 | 1 | prod1 | product 1 |
|-----|---------------|--------|---------------|
| 2 | 4 | prod2 | product 2 |
product_prices
| id | retailer_id | product_id | price |
|-----|---------------|-------------|---------|
| 1 | 3 | 1 | 2.99 |
|-----|---------------|-------------|---------|
| 2 | 3 | 4 | 89.99 |
|-----|---------------|-------------|---------|
| 3 | 1 | 1 | 3.99 |
categories
| id | parent_id | name |
|----|--------------|---------|
| 1 | 0 | a cat |
|----|--------------|---------|
| 2 | 1 | subcat |
|----|--------------|---------|
| 3 | 0 | cat |
|----|--------------|---------|
| 4 | 4 | subcat2 |
非常感谢任何帮助
非常感谢提前