load($_GET); if(!$catalog = Catalog::find()->where(['translit'=>$_GET['translit']])->with('parent')->one()) throw new HttpException(404, 'Данной странице не существует!'); $query = Products::find() ->where( 'catalog_id=:catalog_id', [':catalog_id' => $catalog->id] )->with(['catalog']) ; if(!empty($modelProducts->fasovka)){ $query->innerJoinWith(['fasovka'])->andWhere([ProductsFasovka::tableName().'.fasovka_id'=>$modelProducts->fasovka]); } if(!empty($modelProducts->type)){ $query->innerJoinWith(['type'])->andWhere([ProductsType::tableName().'.type_id'=>$modelProducts->type]); } if(!empty($modelProducts->brends)){ $query->innerJoinWith(['brends'])->andWhere([ProductsBrends::tableName().'.brend_id'=>$modelProducts->brends]); } $query->groupBy(['id']); $query->innerJoinWith(['minCost']); if(!empty($_GET['order'])){ switch($_GET['order']){ case 1 : $query->orderBy('mod.cost ASC'); break; case 2 : $query->orderBy('mod.cost DESC'); break; case 3 : $query->orderBy('name ASC'); break; } }else $query->orderBy('new DESC, top DESC, akciya DESC, name ASC'); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize'=>18]); $pages->forcePageParam = false; $pages->pageSizeParam = false; $products = $query->offset($pages->offset) ->limit($pages->limit) ->orderBy( [ 'out_of_stock' => SORT_ASC, ] ) ->all(); return $this->render('index', [ 'modelProducts'=>$modelProducts, 'catalog'=>$catalog, 'pages'=>$pages, 'products'=>$products, ]); } public function actionSearch(){ $query = Products::find()->innerJoinWith(['catalog','mods']) ; if (!empty($_GET['search_str'])) { $query->andWhere(['like', 'products.name', $_GET['search_str']]); $query->orWhere(['like', 'catalog.name', $_GET['search_str']]); $query->orWhere(['like', 'products.art', $_GET['search_str']]); $query->orWhere(['like', 'mod.art', $_GET['search_str']]); } $query->groupBy(['id']); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize'=>18]); $pages->forcePageParam = false; $pages->pageSizeParam = false; $products = $query->offset($pages->offset) ->limit($pages->limit) ->all(); return $this->render('search', [ 'pages'=>$pages, 'products'=>$products, ]); } public function actionShow(){ if(!$catalog = Catalog::find()->where(['translit'=>$_GET['translit_rubric']])->with('parent')->one()) throw new HttpException(404, 'Данной странице не существует!'); if(!$product = Products::find()->where(['id'=>$_GET['id']])->one()) throw new HttpException(404, 'Данной странице не существует!'); return $this->render('show', [ 'catalog'=>$catalog, 'product'=>$product, ]); } }