2017-07-13 5 views
0

私はこのようなデータを受信したいからデータを受け取ることができます。
Yii2安らかです。どのように私は3つのテーブル

カテゴリ
----カテゴリ1
----カテゴリ2
topProducts
----製品1
--------写真1
--------写真2
---- product2
--------写真1
--------写真2

すべてのカテゴリとトップx製品を取得する必要があります。 各製品には2枚の写真があります。
どうすればyii2を安らかに使用できますか?
ありがとうございます。

+0

同じレベルのカテゴリと製品はなぜですか?トップの製品やカテゴリを持つトップの製品でカテゴリが必要ですか? – csminb

+0

@ThànhNguyễnMinh、あなたはcsminbによって投稿されたソリューションを試しましたか?彼があなたの質問に答えたら、それを受け入れられた答えとしてマークするべきです。 – Antoni4

答えて

1

クエリはあなたが絶対に


単一のクエリをしたい場合、あなたは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。あなたがコードやテーブル構造を提起していないので、私の例の関係はすべて標準的な名前付け規則に基づいています

関連する問題