public static function getRoutingCode() { $criteria = new CDbCriteria(); $criteria->distinct = true; $criteria->select = 'code'; $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('intra_city_routing', $criteria); $data = $command->queryAll(); return $data; }
public static function getProvinceData($rawProvinceName) { $criteria = new CDbCriteria(); $criteria->select = 'name,id'; $criteria->addSearchCondition('name', $rawProvinceName, true, 'AND', $rawProvinceName = 'LIKE'); $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('province', $criteria); $province_datas = $command->queryAll(); $data = array(); foreach ($province_datas as $province_data) { $data[] = array('value' => $province_data['name'], 'label' => $province_data['name'], 'id' => $province_data['id']); } return $data; }
/** * Alters the SQL to apply LIMIT and OFFSET. * @param string $sql SQL query string without LIMIT and OFFSET. * @param integer $limit maximum number of rows, -1 to ignore limit. * @param integer $offset row offset, -1 to ignore offset. * @return string SQL with LIMIT and OFFSET */ public function applyLimit($sql, $limit, $offset) { // Ugly, but this is how MySQL recommends doing it: https://dev.mysql.com/doc/refman/5.0/en/select.html if ($limit <= 0 && $offset > 0) { $limit = PHP_INT_MAX; } return parent::applyLimit($sql, $limit, $offset); }
public static function getSql($criteria, $modelName, $tableAlias = 't') { $tableName = $modelName::model()->tableName(); $schema = Yii::app()->db->schema; $cbuilder = new CDbCommandBuilder($schema); $sqlCommand = $cbuilder->createFindCommand($tableName, $criteria, $tableAlias); $sql = $sqlCommand->text; foreach (array_reverse($criteria->params) as $key => $value) { if (is_string($value)) { $sql = str_replace($key, "'" . addslashes($value) . "'", $sql); } else { $sql = str_replace($key, addslashes($value), $sql); } } // return $sql; echo '<pre>'; print_r($sql); echo '<pre>'; exit; }
public function actionDelete($id) { if (Yii::app()->request->isPostRequest) { if (isset($_POST['YII_CSRF_TOKEN']) && $_POST['YII_CSRF_TOKEN'] === Yii::app()->request->csrfToken) { $model = Pages::model()->findByPk($id); if ($model == null) { throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.'); } foreach ($model->contents as $content) { $criteria = new CDbCriteria(); $criteria->condition = 'content_id=:content_id'; $criteria->params = array('content_id' => $content->id); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createDeleteCommand('contents_lang', $criteria); $result = $command->execute(); $content->delete(); } $criteria = new CDbCriteria(); $criteria->condition = 'page_id=:page_id'; $criteria->params = array('page_id' => $model->id); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createDeleteCommand('pages_lang', $criteria); $result = $command->execute(); $model->delete(); Yii::app()->user->setFlash('success', Yii::t('app', 'Страница успешно удалена')); $this->redirect($this->createUrl('index')); } } else { throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.'); } }
/** * @return array of available attributes in category */ public function getEavAttributes() { if (is_array($this->_eavAttributes)) { return $this->_eavAttributes; } // Find category types $model = new StoreProduct(null); $criteria = $model->applyCategories($this->model)->active()->getDbCriteria(); unset($model); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $criteria->select = 'type_id'; $criteria->group = 'type_id'; $criteria->distinct = true; $typesUsed = $builder->createFindCommand(StoreProduct::model()->tableName(), $criteria)->queryColumn(); // Find attributes by type $criteria = new CDbCriteria(); $criteria->addInCondition('types.type_id', $typesUsed); $query = StoreAttribute::model()->useInFilter()->with(array('types', 'options'))->findAll($criteria); $this->_eavAttributes = array(); foreach ($query as $attr) { $this->_eavAttributes[$attr->name] = $attr; } return $this->_eavAttributes; }
/** * Получение массива идентификаторов потомков текущей категории */ public function getChildsArray() { $childs = array(); $criteria = new CDbCriteria(); $criteria->select = 'id'; $criteria->condition = 'upline LIKE :upline'; $criteria->params = array('upline' => $this->id . '.%'); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createFindCommand('shop_categories', $criteria); $parents = $command->queryAll(); $childs = array_map(function ($element) { return $element['id']; }, $parents); return $childs; }
/** * Создает команду UPDATE, инкрементирующую/декрементирующую некоторые столбцы. * Переопределяет родительскую реализацию для проверки наличия выражения ORDER BY * в случае наличия определенного смещения * @param mixed $table схема таблицы ({@link CDbTableSchema}) или имя таблицы (строка) * @param array $counters обновляемые счетчики (индексированные по именам столбцов счетчики инкремента/декремента) * @param CDbCriteria $criteria критерий запроса * @return CDbCommand команда инкремента/декремента * @throws CException вызывается, если счетчик не определен */ public function createUpdateCounterCommand($table, $counters, $criteria) { $criteria = $this->checkCriteria($table, $criteria); return parent::createUpdateCounterCommand($table, $counters, $criteria); }
/** * Alters the SQL to apply JOIN clause. * Overrides parent implementation to comply with the DELETE command syntax required when multiple tables are referenced. * @param string $sql the SQL statement to be altered * @param string $join the JOIN clause (starting with join type, such as INNER JOIN) * @return string the altered SQL statement */ public function applyJoin($sql, $join) { if (trim($join) !== '') { $sql = preg_replace('/^\\s*DELETE\\s+FROM\\s+((\\[.+\\])|([^\\s]+))\\s*/i', "DELETE \\1 FROM \\1", $sql); } return parent::applyJoin($sql, $join); }
/** *belum tentu dipakai : * * @param type $province * @param type $district * @param type $postal */ public static function getZoneIdOrDistrictId($province, $district, $postal) { if (empty($postal)) { $criteria = new CDbCriteria(); $criteria->select = 't.id'; $criteria->join = 'JOIN district ON t.district_id = district.id JOIN province ON province.id = district.province_id'; $criteria->addSearchCondition('district.name', $district, true, 'AND'); $criteria->addSearchCondition('province.name', $province, true, 'AND'); $criteria->limit = 1; $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('zone', $criteria); $zone_id = $command->queryAll(); } else { $zone_id = Area::model()->findByAttributes(array('postcode' => $postal)); } print_r($zone_id); exit; }
public static function getCityRate($product_id, $routing_code, $weight, $customer_id = null, $use_rate = array()) { $criteria = new CDbCriteria(); if (!!$customer_id && count($use_rate) == 0) { return array(); } if (!!$customer_id) { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id JOIN customer_discount t6 on t6.service_id = t4.id'; $select = 't.service_id as service_id,t.weight_inc ,t.price , t5.code as service_code, t3.code as carrier_code,t3.name as carrier_name,t5.name as service_name,t.id as id,t6.harga_api,t6.discount_api,t.transit_time'; } else { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id'; $select = 't.service_id as service_id,t.weight_inc ,t.price , t5.code as service_code, t3.code as carrier_code,t3.name as carrier_name,t5.name as service_name,t.id as id,t.transit_time'; } $criteria->join = $join; $criteria->select = $select; $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $criteria->params = array(':product_id' => $product_id); $criteria->condition = 't5.product_id=:product_id'; if (!!$customer_id) { $criteria->params[':customer_id'] = $customer_id; $criteria->addCondition('t6.customer_id =:customer_id AND t6.use_rate = 1'); } $command = $builder->createFindCommand('rate_city', $criteria); $rates = $command->queryAll(); $services = array(); foreach ($rates as $rate) { if (!!$customer_id) { if ($rate['harga_api'] != 0) { $price = $rate['harga_api'] * self::increment($weight, $rate['weight_inc']); } else { $price = ($rate['price'] - $rate['price'] * ($rate['discount_api'] / 100)) * self::increment($weight, $rate['weight_inc']); } } else { $price = $rate['price'] * self::increment($weight, $rate['weight_inc']); } $service = array('id' => $rate['id'], 'service_id' => $rate['service_id'], 'routing_code' => $routing_code, 'carrier_name' => $rate['carrier_name'], 'service_code' => $rate['service_code'], 'service_name' => $rate['service_name'], 'price' => $price, 'transits_days' => $rate['transit_time'] . ' hari'); array_push($services, $service); } return $services; }
public static function getServices($total_weight, $zone, $transit_time, $customer_id = null, $use_rate = array()) { $weight_to_search = self::modulo05($total_weight); $service = array(); $price = 0; if (!!$customer_id && count($use_rate) == 0) { return array(); } if (!!$customer_id) { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id JOIN customer_discount t6 on t6.service_id = t4.id'; $select = ',t5.code as service_code, t3.code as carrier_code, t.type, t.service_id, t3.name as carrier_name,t5.name as service_name,t6.discount_api,t.id as id'; } else { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id'; $select = ',t5.code as service_code, t3.code as carrier_code, t.type, t.service_id, t3.name as carrier_name,t5.name as service_name,t.id as id'; } $criteria = new CDbCriteria(); $criteria->join = $join; $criteria->select = $zone . $select; $criteria->addColumnCondition(array('t.weight' => $weight_to_search)); if (!!$customer_id) { $criteria->addCondition('t6.use_rate = 1'); } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('rate_international', $criteria); $rates = $command->queryAll(); if (!empty($rates)) { foreach ($rates as $rate) { if (!!$customer_id) { $price = $rate[$zone] - $rate[$zone] * ($rate['discount_api'] / 100); } else { $price = $rate[$zone]; } array_push($service, array('price' => $price, 'id' => $rate['id'], 'service_id' => $rate['service_id'], 'transits_days' => $transit_time . ' days', 'carrier_name' => $rate['carrier_name'], 'service_name' => $rate['service_name'], 'service_code' => $rate['service_code'], 'routing_code' => $rate['carrier_code'], 'package_type' => $rate['type'])); } } return $service; }
public static function getListPostcode($area, $district) { $criteria = new CDbCriteria(); $criteria->select = 't.name,t.postcode'; $criteria->join = 'JOIN zone t2 ON t2.id = t.zone_id JOIN district t3 ON t3.id = t2.district_id'; $criteria->condition = 't.name LIKE :sterm AND t3.name LIKE :district'; $criteria->params = array(":sterm" => "%{$area}%", ":district" => "%{$district}%"); $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('area', $criteria); $data_postcodes = $command->queryAll(); $data = array(); foreach ($data_postcodes as $data_postcode) { $data[] = array('value' => $data_postcode['postcode'], 'label' => $data_postcode['name']); } return $data; }
protected function createFindCommand($criteria) { $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createFindCommand($this->tableName, $criteria); return $command; }
public static function getZoneCountryData($country) { $criteria = new CDbCriteria(); $criteria->select = 'zone'; $criteria->compare('country', ucfirst($country), 'AND', FALSE); $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('zone_international', $criteria); $data = $command->queryRow(); return $data; }
public function actionGetExtTypeService() { $result = array('status' => 'error', 'data' => ''); $data = array(); if (isset($_REQUEST['Shipment'])) { $shipment = new Shipment(); $shipment->setAttributes($_REQUEST['Shipment']); if ($shipment->customer_id != '') { $join = 'INNER JOIN product_service t2 ON t.id = t2.product_id INNER JOIN service_detail t3 ON t2.id = t3.product_service_id INNER JOIN rate_company_service t4 ON t4.id = t3.rate_company_service_id JOIN rate_company t5 ON t5.id = t4.rate_company_id JOIN customer_discount t6 ON t3.id = t6.service_id'; $select = 't4.id as service_id,t2.name as service_name,t2.code,t4.name as carrier_service,t5.name vendor_name,t6.use_rate'; } else { $join = 'INNER JOIN product_service t2 ON t.id = t2.product_id INNER JOIN service_detail t3 ON t2.id = t3.product_service_id INNER JOIN rate_company_service t4 ON t4.id = t3.rate_company_service_id JOIN rate_company t5 ON t5.id = t4.rate_company_id'; $select = 't4.id as service_id,t2.name as service_name,t2.code,t4.name as carrier_service,t5.name vendor_name'; } $cek_routing = RateCompany::model()->findByAttributes(array('code' => $shipment->destination_code)); $criteria = new CDbCriteria(); $criteria->join = $join; $criteria->select = $select; $criteria->addSearchCondition('t.name', $shipment->service_type); if ($shipment->customer_id != '') { $criteria->params[':customer_id'] = $shipment->customer_id; $criteria->addCondition('t6.customer_id =:customer_id AND use_rate = 1'); } if ($shipment->service_type == 'City Courier') { if ($cek_routing instanceof RateCompany) { $criteria->addSearchCondition('t5.code', $shipment->destination_code); } else { $criteria->addSearchCondition('t5.id', 5); } } if ($shipment->service_type == 'Domestic') { $criteria->addSearchCondition('t5.code', $shipment->destination_code); } if ($shipment->service_type == 'International') { $criteria->addSearchCondition('t5.code', $shipment->destination_code); if (ucfirst($shipment->receiver_country) != 'indonesia') { $criteria->addSearchCondition('t2.id', 10); } else { $criteria->addSearchCondition('t2.id', 11); } } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('product', $criteria); $services = $command->queryAll(); if (!!$services) { $result = array('status' => 'success', 'data' => $services); } } echo CJSON::encode($result); Yii::app()->end(); }
/** * Generates the expression for selecting rows of specified primary key values. * @param mixed $table the table schema ({@link CDbTableSchema}) or the table name (string). * @param mixed $columnName the column name(s). It can be either a string indicating a single column * or an array of column names. If the latter, it stands for a composite key. * @param array $values list of key values to be selected within * @param string $prefix column prefix (ended with dot). If null, it will be the table name * @return string the expression for selection */ public function createInCondition($table, $columnName, $values, $prefix = null) { parent::createInCondition($table, $columnName, $values); }
public static function getServiceList($from, $did, $zid, $weight = 0, $product_id, $customer_id = null, $use_rate = array()) { $services = array(); $rates = array(); if (!!$customer_id && count($use_rate) == 0) { return array(); } if (!!$customer_id) { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id JOIN customer_discount t6 on t6.service_id = t4.id'; $select = 't.service_id as service_id,t.first_kg as first_kg,t.next_kg as next_kg,t5.code as service_code, t3.code as carrier_code,t3.name as carrier_name,t.max_transit_time as transit_day,t5.name as service_name,t6.discount_api,t.id as id'; } else { $join = 'JOIN rate_company_service t2 on t.service_id = t2.id JOIN rate_company t3 ON t2.rate_company_id = t3.id JOIN service_detail t4 ON t4.rate_company_service_id = t2.id JOIN product_service t5 ON t5.id = t4.product_service_id'; $select = 't.service_id as service_id,t.first_kg as first_kg,t.next_kg as next_kg,t5.code as service_code, t3.code as carrier_code,t3.name as carrier_name,t.max_transit_time as transit_day,t5.name as service_name,t.id as id'; } $criteria = new CDbCriteria(); $criteria->join = $join; $criteria->select = $select; $criteria->compare('t5.product_id', $product_id, FALSE); $criteria->compare('origin_id', $from, FALSE); if ($zid == 0) { $criteria->params = array(':zone_id' => 0, ':district_id' => $did); $criteria->condition = 'zone_id=:zone_id AND district_id=:district_id'; if (!!$customer_id) { $criteria->params[':customer_id'] = $customer_id; $criteria->addCondition('t6.customer_id =:customer_id AND t6.use_rate = 1'); } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('rate_domestic', $criteria); $rates_by_did = $command->queryAll(); if (count($rates_by_did) > 0) { $rates = $rates_by_did; } } else { $criteria->params = array(':zone_id' => $zid); $criteria->condition = 'zone_id=:zone_id'; if (!!$customer_id) { $criteria->params[':customer_id'] = $customer_id; $criteria->addCondition('t6.customer_id =:customer_id AND t6.use_rate = 1'); } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('rate_domestic', $criteria); $rates_by_zid = $command->queryAll(); if (count($rates_by_zid) > 0) { $rates = $rates_by_zid; } else { $criteria->params = array(':zone_id' => 0, ':district_id' => $did); $criteria->condition = 'zone_id=:zone_id AND district_id=:district_id'; if (!!$customer_id) { $criteria->params[':customer_id'] = $customer_id; $criteria->addCondition('t6.customer_id =:customer_id AND t6.use_rate = 1'); } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('rate_domestic', $criteria); $rates_by_did = $command->queryAll(); if ($rates_by_did > 0) { $rates = $rates_by_did; } } } if (count($rates) > 0) { foreach ($rates as $rate) { if ($weight < 1) { $ratesAvailable = 0; } else { if ($weight >= 1) { $ratesAvailable = $rate['first_kg']; if ($weight != 1) { $ratesAvailable = $ratesAvailable + $rate['next_kg'] * ceil($weight - 1); } } } if (!!$customer_id) { $ratesAvailable = $ratesAvailable - $ratesAvailable * ($rate['discount_api'] / 100); } $service = array('id' => $rate['id'], 'service_id' => $rate['service_id'], 'routing_code' => $rate['carrier_code'], 'carrier_name' => $rate['carrier_name'], 'service_code' => $rate['service_code'], 'service_name' => $rate['service_name'], 'price' => $ratesAvailable, 'transits_days' => $rate['transit_day'] . ' hari'); array_push($services, $service); } } return $services; }
public static function getCustomerDiscountRate($service_id, $customer_id) { $criteria = new CDbCriteria(); $criteria->join = 'JOIN service_detail t2 on t2.id = t.service_id JOIN rate_company_service t3 on t3.id = t2.rate_company_service_id'; $criteria->select = 't.discount, t.harga_invoice, t.vendor_discount'; $criteria->condition = 't3.id =:service_id AND t.customer_id =:customer_id'; $criteria->params = array(':service_id' => $service_id, ':customer_id' => $customer_id); $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('customer_discount', $criteria); $qa = $command->queryRow(); return $qa; }
/** * Creates the SQL statement. * @param CDbCommandBuilder $builder the command builder * @return CDbCommand DB command instance representing the SQL statement */ public function createCommand($builder) { $sql = ($this->distinct ? 'SELECT DISTINCT ' : 'SELECT ') . implode(', ', $this->selects); $sql .= ' FROM ' . implode(' ', $this->joins); $conditions = array(); foreach ($this->conditions as $condition) { if ($condition !== '') { $conditions[] = $condition; } } if ($conditions !== array()) { $sql .= ' WHERE (' . implode(') AND (', $conditions) . ')'; } $groups = array(); foreach ($this->groups as $group) { if ($group !== '') { $groups[] = $group; } } if ($groups !== array()) { $sql .= ' GROUP BY ' . implode(', ', $groups); } $havings = array(); foreach ($this->havings as $having) { if ($having !== '') { $havings[] = $having; } } if ($havings !== array()) { $sql .= ' HAVING (' . implode(') AND (', $havings) . ')'; } $orders = array(); foreach ($this->orders as $order) { if ($order !== '') { $orders[] = $order; } } if ($orders !== array()) { $sql .= ' ORDER BY ' . implode(', ', $orders); } $sql = $builder->applyLimit($sql, $this->limit, $this->offset); $command = $builder->getDbConnection()->createCommand($sql); $builder->bindValues($command, $this->params); return $command; }
public static function getZoneID($data, $mode = 'postcode') { $criteria = new CDbCriteria(); $criteria->select = 't.zone_id,t2.district_id'; $criteria->join = 'JOIN zone t2 ON t2.id=t.zone_id JOIN district t3 ON t3.id = t2.district_id'; if ($mode == 'postcode') { $criteria->addCondition('t.postcode = ' . $data); } elseif ($mode == 'city') { $criteria->condition = 't3.name = "' . $data . '" AND t3.type = "kota"'; // $criteria->addCondition('t2.name = "'.$data.'"', 'OR'); } $builder = new CDbCommandBuilder(Yii::app()->db->Schema); $command = $builder->createFindCommand('area', $criteria); $result = $command->queryRow(); return $result; }
/** * @param StoreCategory $category * @param bool $withChild * @param null $limit * @return CActiveDataProvider */ public function getListForCategory(StoreCategory $category, $withChild = true, $limit = null) { $categories = []; if (true === $withChild) { $categories = $category->getChildsArray(); } $categories[] = $category->id; $criteria = new CDbCriteria(['scopes' => ['published']]); $builder = new CDbCommandBuilder(Yii::app()->getDb()->getSchema()); $criteria->addInCondition('t.category_id', array_unique($categories)); $criteria->addCondition(sprintf('t.id IN (SELECT product_id FROM {{store_product_category}} WHERE %s)', $builder->createInCondition('{{store_product_category}}', 'category_id', $categories)), 'OR'); $pagination = ['pageSize' => (int) Yii::app()->getModule('store')->itemsPerPage, 'pageVar' => 'page']; if ($limit) { $pagination = false; $criteria->limit = (int) $limit; } return new CActiveDataProvider(Product::model(), ['criteria' => $criteria, 'pagination' => $pagination, 'sort' => ['sortVar' => 'sort', 'defaultOrder' => 't.position']]); }
/** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function searchFrontend($criteria = false, $category = false) { if (!$criteria) { $criteria = new SDbCriteria(); } $criteria->compare('active', self::ACTIVE); if ($this->searchNameIndex) { $criteria->compare('name_index', $this->searchNameIndex, true); } else { $criteria->compare('id_brand', $this->id_brand); $criteria->group = 't.id'; if ($this->price) { list($priceFrom, $priceTo) = explode(',', $this->price); $criteria->addCondition("price >= :priceFrom AND price <= :priceTo"); $criteria->params += [':priceFrom' => $priceFrom, ':priceTo' => $priceTo]; } $criteria->together = true; } if ($category) { $criteria->compare('t.id_category', ProductCategory::descendantsIds($category->id, true)); } if (!$this->searchNameIndex) { //Для получения минимальной и максимальной цены продукта, чтобы проставить в фильтре цены $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $minMaxPriceCriteria = clone $criteria; $minMaxPriceCriteria->select = "t.price"; $command = $builder->createFindCommand(Product::model()->tableName(), $minMaxPriceCriteria); $result = $command->queryColumn(); if ($result) { $this->max_price = max($result); } if ($this->productOptions) { $criteria->with[] = 'options'; $criteria->compare('options.id_variation', $this->productOptions); } } $pageSize = Cookie::get('product-list-view') == 'thumbnail' ? self::PAGESIZE_THUMBNAIL : self::PAGESIZE_LIST; return new SActiveDataProvider($this, array('criteria' => $criteria, 'pagination' => array('pageSize' => $pageSize, 'pageVar' => 'page'), 'sort' => ['attributes' => ['price', 'name', 'viewed']])); }