Commit 04eb9f674a0e4f7f58de2f62b68c52c065b6137a

Authored by Alexey Boroda
1 parent 776dd7a1

-Search with sale products

frontend/controllers/SearchController.php
... ... @@ -54,7 +54,7 @@ class SearchController extends \yii\web\Controller
54 54 }
55 55  
56 56 $productModel = new ProductFrontendSearch();
57   - $productProvider = $productModel->search(null, $params, false);
  57 + $productProvider = $productModel->search(null, $params, false, false);
58 58  
59 59  
60 60 return $this->render(
... ...
frontend/models/ProductFrontendSearch.php
... ... @@ -2,19 +2,15 @@
2 2  
3 3 namespace frontend\models;
4 4  
5   - use common\modules\product\helpers\FilterHelper;
6 5 use common\modules\product\helpers\ProductHelper;
7 6 use common\modules\product\models\Category;
8   - use Yii;
9 7 use yii\base\Model;
10   - use yii\data\ActiveDataProvider;
11 8 use yii\data\ArrayDataProvider;
12 9 use yii\db\ActiveQuery;
13 10  
14 11 use common\modules\product\models\Product;
15 12 use common\modules\product\models\ProductVariant;
16 13 use yii\db\Query;
17   - use yii\helpers\ArrayHelper;
18 14  
19 15 class ProductFrontendSearch extends Product
20 16 {
... ... @@ -54,12 +50,12 @@
54 50 *
55 51 * @return ArrayDataProvider
56 52 */
57   - public function search($category = null, $params = [], $in_stock = true)
  53 + public function search($category = null, $params = [], $in_stock = true, $without_sale = true)
58 54 {
59 55  
60 56 $dataProvider = new ArrayDataProvider(
61 57 [
62   - 'allModels' => $this->getSearchQuery($category, $params, $in_stock)
  58 + 'allModels' => $this->getSearchQuery($category, $params, $in_stock, $without_sale)
63 59 ->with(
64 60 [
65 61 'images',
... ... @@ -96,7 +92,7 @@
96 92 return $dataProvider;
97 93 }
98 94  
99   - public function getSearchQuery($category = null, $params = [], $in_stock = true)
  95 + public function getSearchQuery($category = null, $params = [], $in_stock = true, $without_sale = true)
100 96 {
101 97  
102 98 if (!empty($category)) {
... ... @@ -137,19 +133,21 @@
137 133 /**
138 134 * Removing products that currently in events
139 135 */
140   - $query->andWhere(
141   - [
142   - 'not',
  136 + if ($without_sale) {
  137 + $query->andWhere(
143 138 [
144   - 'product.product_id' => ( new Query() )->select('events_to_products.product_id')
145   - ->from('events_to_products')
146   - ->innerJoin(
147   - 'event',
148   - 'event.event_id=events_to_products.event_id'
149   - )->where(['event.sale' => true]),
150   - ],
151   - ]
152   - );
  139 + 'not',
  140 + [
  141 + 'product.product_id' => ( new Query() )->select('events_to_products.product_id')
  142 + ->from('events_to_products')
  143 + ->innerJoin(
  144 + 'event',
  145 + 'event.event_id=events_to_products.event_id'
  146 + )->where(['event.sale' => true]),
  147 + ],
  148 + ]
  149 + );
  150 + }
153 151  
154 152 return $query;
155 153 }
... ...