Ich habe unten einige Codes meiner Anwendung hinzugefügt. Es zeigt nur den Namen der Produktkategorie und die Anzahl der Produkte an, die zu dieser Produktkategorie gehören. Es wirkt wie ein Zauber. Aber ich möchte den Kategorienamen und seine Produkte wiederbekommen, die nur zu bestimmten Städten gehören. Beispiel, ich möchte die Anzahl der Produkte bekommen, die zur Kategorie "Holz" gehören und in Baku liegen. Ich denke, dass ich einige Änderungen in der Funktion getActiveProducts() meines Modells vornehmen muss. Jede Hilfe wird geschätzt. Das sind meine Tabellen:Yii2 hasmany Zustand und mehrere Tabelle
Produkt
id | name | offer_category_id
-----------------------------
1 | Khar | 3
2 | SantaCruz | 2
3 | Furniture | 2
4 | VT | 1
5 | newFort | 4
product_category
id | name
--------------
1 | Khar
2 | Wooden
3 | Sion
4 | VT
5 | newFort
product_adress
id | city | offer_id
-----------------------------
1 | Baku | 1
2 | Ismailly | 2
3 | Absheron | 5
4 | Paris | 4
5 | Istanbul | 3
Mein Controller:
$data['productCategory'] = ProductCategory::find()
->joinWith('products')
->all();
anzeigen Code:
<?php foreach($data['productCategory'] as $key=>$value):
<li>
<span class="m-offer-count"><?= $value->productsCount; ?></span>
</li>
<?php endforeach; ?>
Und schließlich mein Product Modell:
public function getActiveProducts() {
$all_products = $this->hasMany(Product::className(),['product_category_id' => 'id'])->select(['id'])->where(['status'=>1])->all();
return $all_product;
}
public function getProductsCount() {
return sizeof($this->activeProducts);
}
Ich löste diese Aufgabe durch eine andere Art und Weise, wenn Sie I'll wollen es teilen –
@ShaigKhaligli Sie können diese Antwort mit Ihrer Lösung aktualisieren. Oder aktualisiere deine Frage. Es ist interessant, wie Sie es gelöst haben, und es kann für jemand anderen hilfreich sein – oakymax