我想收到这样的数据:
类别
----类别1
----产品组别
新产品推荐
----产品1
--------照片1
--------照片2
----产品2
--------照片1
--------照片2
我需要获得所有类别和顶级x产品。 每件产品都有两张照片 我如何通过使用yii2 restful来做到这一点? 感谢。
答案 0 :(得分:1)
查询shold看起来像这样
Category::find()
->with(['subcategories','topProducts', 'topProducts.images'])
->all();
如果您绝对需要单个查询,可以使用joinWith
如果使用ActiveController检索数据,则需要为Category模型指定extraFields。 (这里是一个特定于休息的usage example - 指南的其余部分也应该证明是有用的)
类别模型:
public function extraFields() {
return ['subcategories', 'topProducts'];
}
// product relation
public function getTopProducts(){
return $this->hasMany(Product::className(), ['category_id' => 'id'])
// ->order()->where() // your criterias
->limit(10);
}
// subcategories
public function getChildren(){
return $this->hasMany(Category::className(), ['id' => 'parent_id']);
}
产品型号:
public function extraFields() {
return ['iamges'];
}
public function getImages(){
return $this->hasMany(Image::className(), ['product_id' => 'id'])
}
PS。既然你没有提出任何代码或表结构,我的例子中的所有关系都基于标准的naiming约定