Laravel有很多关系

时间:2014-12-10 18:27:27

标签: php laravel-4 relationship

假设我有以下表格

我可以管理简单的关系,但是我遇到了急于加载所有内容的问题。我想要做的是首先获取所有子类别的所有产品父类别(其中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 |

非常感谢任何帮助

非常感谢提前

0 个答案:

没有答案