public function run() { $this->cart = \Yii::$app->cart; $products = Product::find()->orderBy(['id' => SORT_DESC])->limit($this->num)->all(); $showOwners = $this->cart->saveToDataBase; return $this->render('new-products', ['products' => $products, 'showOwners' => $showOwners]); }
/** * Lists Product models. * * DataProvider sends created by user product models for users which have 'viewProductList' permission * and for users which have 'viewCompleteProductList' permission it sends all product models. * * @return mixed * @throws ForbiddenHttpException */ public function actionIndex() { $searchModel = new SearchProduct(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $notModeratedProductsCount = count(Product::find()->where(['status' => Product::STATUS_ON_MODERATION])->all()); return $this->render('index', ['notModeratedProductsCount' => $notModeratedProductsCount, 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'languages' => Language::findAll(['active' => true])]); }
public function up() { $this->addColumn('shop_product', 'status', $this->integer()->defaultValue(1)); $products = Product::find()->all(); foreach ($products as $product) { $product->status = 10; $product->save(); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = \Yii::$app->user->can('viewCompleteProductList') ? Product::find()->joinWith('translations')->orderBy(['category_id' => SORT_ASC, 'position' => SORT_ASC]) : Product::find()->joinWith('translations')->where(['owner' => \Yii::$app->user->id])->orderBy(['category_id' => SORT_ASC, 'position' => SORT_ASC]); $this->load($params); $query->andFilterWhere(['shop_product.category_id' => $this->category])->andFilterWhere(['like', 'shop_product_translation.title', $this->title])->andFilterWhere(['shop_product.status' => $this->status]); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 10]]); if (!$this->validate()) { return $dataProvider; } return $dataProvider; }
private function findRecommendedProducts($id) { if (!empty($id)) { $product = Product::findOne($id); $categoryId = $product->category_id; $previous = Product::find()->where(['<', 'id', $id])->andWhere(['category_id' => $categoryId])->orderBy(['id' => SORT_DESC])->limit('2')->all(); $next = Product::find()->where(['>', 'id', $id])->andWhere(['category_id' => $categoryId])->orderBy(['id' => SORT_ASC])->limit('2')->all(); $products = ArrayHelper::merge($previous, $next); return $products; } return false; }
/** * Creates data provider instance with search query applied * @param array $params * @return ActiveDataProvider * @throws Exception if search is not validated */ public function search($params, $descendantCategories) { $this->load($params, ''); $query = Product::find(); if (\Yii::$app->controller->module->showChildCategoriesProducts) { if (!empty($params['id'])) { $query->where(['in', 'category_id', ArrayHelper::map($descendantCategories, 'id', 'id')]); } } else { if (!empty($params['id'])) { $query->where(['category_id' => $params['id']]); } } $filterTypes = FilterType::find()->all(); foreach ($filterTypes as $filterType) { $className = $filterType->class_name; /*Getting get-method name*/ $getMethodName = explode("\\", $className); $getMethodName = lcfirst(end($getMethodName)); $query->joinWith($getMethodName); $tableName = $className::tableName(); $column = $filterType->column; $query->andFilterWhere([$tableName . '.' . 'id' => $this->{$column}]); } if (isset($params['sort'])) { switch ($params['sort']) { case self::SORT_CHEAP: $query->orderBy(['price' => SORT_ASC]); break; case self::SORT_EXPENSIVE: $query->orderBy(['price' => SORT_DESC]); break; case self::SORT_OLD: $query->orderBy(['creation_time' => SORT_ASC]); break; case self::SORT_NEW: $query->orderBy(['creation_time' => SORT_DESC]); break; } } else { $query->orderBy(['category_id' => SORT_ASC, 'position' => SORT_ASC]); } $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10]]); if ($this->validate()) { return $dataProvider; } else { throw new Exception(); } }
public function safeUp() { $this->addColumn('shop_product', 'position', 'INT(5) AFTER id'); $categories = Category::find()->all(); foreach ($categories as $category) { $products = Product::find()->where(['category_id' => $category->id])->all(); for ($i = 0; $i < count($products); $i++) { $this->execute('UPDATE shop_product SET position=' . ($i + 1) . ' WHERE id=' . $products[$i]->id . ' AND category_id=' . $category->id); } } $this->addColumn('shop_category', 'position', $this->integer()); for ($i = 0; $i < count($categories); $i++) { $this->execute('UPDATE shop_category SET position=' . ($i + 1) . ' WHERE id=' . $categories[$i]->id); } }
private function findProductBySeoUrl($seoUrl, $categoryId, $options = []) { $productsSeoData = SeoData::find()->where(['entity_name' => ProductTranslation::className(), 'seo_url' => $seoUrl])->all(); if ($productsSeoData) { foreach ($productsSeoData as $productSeoData) { if ($product = Product::find()->joinWith('translations translation')->where(array_merge(['translation.id' => $productSeoData->entity_id, 'category_id' => $categoryId, 'translation.language_id' => $this->currentLanguage->id], $options))->one()) { return $product; } } } return null; }