クエリはあなたが絶対に
単一のクエリをしたい場合、あなたはActiveControllerでデータを取得する場合、あなたはextraFieldsを指定する必要がjoinWithを使用することができ、この
Category::find()
->with(['subcategories','topProducts', 'topProducts.images'])
->all();
ようになりSHOLDカテゴリモデルに追加します。 (ここでは残りの固有usage exampleだ - ガイドの残りの部分は、同様に便利証明する必要があります)
Categoryモデル:
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。あなたがコードやテーブル構造を提起していないので、私の例の関係はすべて標準的な名前付け規則に基づいています
同じレベルのカテゴリと製品はなぜですか?トップの製品やカテゴリを持つトップの製品でカテゴリが必要ですか? – csminb
@ThànhNguyễnMinh、あなたはcsminbによって投稿されたソリューションを試しましたか?彼があなたの質問に答えたら、それを受け入れられた答えとしてマークするべきです。 – Antoni4