'Фасовка', 'type'=>'Типы', 'brends'=>'Бренды', ]; } public function getCatalog() { return $this->hasOne(Catalog::className(), ['id' => 'catalog_id']); } public function getMods() { return $this->hasMany(Mod::className(), ['product_id' => 'id']); } public function getMinCost() { return $this->hasOne(Mod::className(), ['product_id' => 'id'])->orderBy('cost'); } public function getCost() { //$res = $this->hasOne(Mod::className(), ['product_id' => 'id'])->orderBy('cost'); //print_r($res);exit; $res = Mod::find()->where(['product_id' => $this->id])->orderBy('cost')->one(); return (!empty($res->cost)) ? $res : ((object) ['cost'=>0]); } public function getFasovka() { return $this->hasMany(ProductsFasovka::className(), ['product_id' => 'id']); } public function getType() { return $this->hasMany(ProductsType::className(), ['product_id' => 'id']); } public function getBrends() { return $this->hasMany(ProductsBrends::className(), ['product_id' => 'id']); } public function getFotos() { return $this->hasMany(Fotos::className(), ['product_id' => 'id']); } public function fasovkaAll($catalog_id){ $fasovka = Fasovka::find()->where(['catalog_id'=>$catalog_id])->innerJoinWith(['productsFasovka']); if(!empty($this->type)){ $fasovka->leftJoin('productsType', 'productsType.product_id = productsFasovka.product_id')->andWhere(['productsType.type_id'=>$this->type]); } if(!empty($this->brends)){ $fasovka->leftJoin('productsBrends', 'productsBrends.product_id = productsFasovka.product_id')->andWhere(['productsBrends.brend_id'=>$this->brends]); } return $fasovka->asArray()->orderBy('name')->all(); } public function typeAll($catalog_id){ $type = Type::find()->where(['catalog_id'=>$catalog_id])->innerJoinWith(['productsType']); if(!empty($this->fasovka)){ $type->leftJoin('productsFasovka', 'productsFasovka.product_id = productsType.product_id')->andWhere(['productsFasovka.fasovka_id'=>$this->fasovka]); } if(!empty($this->brends)){ $type->leftJoin('productsBrends', 'productsBrends.product_id = productsType.product_id')->andWhere(['productsBrends.brend_id'=>$this->brends]); } return $type->asArray()->orderBy('name')->all(); } public function brendsAll($catalog_id){ $brends = Brends::find()->where(['catalog_id'=>$catalog_id])->innerJoinWith(['productsBrends']); if(!empty($this->fasovka)){ $brends->leftJoin('productsFasovka', 'productsFasovka.product_id = productsBrends.product_id')->andWhere(['productsFasovka.fasovka_id'=>$this->fasovka]); } if(!empty($this->type)){ $brends->leftJoin('productsType', 'productsType.product_id = productsBrends.product_id')->andWhere(['productsType.type_id'=>$this->type]); } return $brends->asArray()->orderBy('name')->all(); } }