Yii2宁静。我如何从3个表中接收数据

时间:2017-07-13 04:25:19

标签: yii2

我想收到这样的数据:

  

类别
    ----类别1
    ----产品组别
  新产品推荐
    ----产品1
      --------照片1
      --------照片2
    ----产品2
      --------照片1
      --------照片2

我需要获得所有类别和顶级x产品。 每件产品都有两张照片 我如何通过使用yii2 restful来做到这一点? 感谢。

1 个答案:

答案 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约定