Example #1
0
 public function getAllBanner($banner_id, $limit)
 {
     $query = new \yii\db\Query();
     $query->select('*')->from('banner_image');
     $query->join('LEFT JOIN', 'banner_image_description', 'banner_image_description.banner_image_id = banner_image.banner_image_id');
     $query->where(['=', 'banner_image.banner_id', $banner_id]);
     $query->orderBy(['banner_image.sort_order' => SORT_ASC]);
     $query->limit($limit);
     $query->offset(0);
     return $query->all();
 }
Example #2
0
 public function getAllBestSellerProducts($limit)
 {
     $time = new \DateTime('now');
     $today = $time->format('Y-m-d');
     $query = new \yii\db\Query();
     $query->select('order_product.product_id , SUM(order_product.quantity) AS total')->from('order_product');
     $query->join('LEFT JOIN', 'order', 'order_product.order_id = order.order_id');
     $query->join('LEFT JOIN', 'product', 'order_product.product_id = product.product_id');
     $query->join('LEFT JOIN', 'product_to_store', 'product.product_id = product_to_store.product_id');
     $query->where(['>', 'order.order_status_id', 0]);
     $query->andWhere(['=', 'product.status', 1]);
     $query->andWhere(['<=', 'product.date_available', $today]);
     $query->andWhere(['=', 'product_to_store.store_id', (int) \Yii::$app->params['store_id']]);
     $query->groupBy('order_product.product_id');
     $query->orderBy(['total' => SORT_DESC]);
     $query->limit($limit);
     $query->offset(0);
     return $query->all();
 }
Example #3
0
 public function actionUser()
 {
     echo 'Start export.' . PHP_EOL;
     // Наше PDO подключение к БД
     $db = Yii::$app->db;
     // Размер одной части обрабатываемых данных
     $part_size = 1000;
     $fields = ['user.id' => 'ID', 'profile.name' => 'Name', 'profile.last_name' => 'Last Name', 'user.social_id' => 'Social ID', 'created_at' => 'Created at'];
     // Файл, в который будем записывать результат (в корне сайта)
     $fname = Yii::$app->basePath . '/export/user.csv';
     $f = @fopen($fname, 'w');
     // Записываем в начало файла заголовок для sitemap-файла
     $csvHeader = '"' . implode('";"', $fields) . '"';
     fwrite($f, $csvHeader . PHP_EOL);
     $query = new \yii\db\Query();
     // Команда, которая будет делать порционную выборку новостей
     $query->select(implode(',', array_keys($fields)));
     $query->from('user, profile');
     $query->andWhere('user.id = profile.user_id');
     //$query->join('LEFT JOIN', 'profile', 'user.id = profile.user_id');
     // Определяем количество данных, которое нам нужно обработать
     $all_count = (int) $db->createCommand("SELECT COUNT(id) FROM user")->queryScalar();
     // Устанавливаем лимит, сколько новостей надо выбрать из таблицы
     $query->limit($part_size);
     // Перебираем все части данных
     for ($i = 0; $i < ceil($all_count / $part_size); $i++) {
         // Сюда будем складывать порции данных, для записи в файл, каждый
         // элемент массива - это одна строка
         $part = array();
         // Вычисляем отступ от уже обработанных данных
         $offset = $i * $part_size;
         // Устанавливам отступ
         $query->offset($offset);
         // Находим очередную часть данных
         $rows = $query->all();
         // Перебираем найденные данные
         foreach ($rows as $row) {
             $row['created_at'] = date('m-d-Y', $row['created_at']);
             // Открываем тег <url> - начало описания элемента в sitemap-файле
             $part[] = '"' . implode('";"', $row) . '"';
         }
         // Убираем из памяти найденную часть данных
         unset($rows);
         // Добавляем в наш файл обработанную часть данных
         if (count($part)) {
             // Здесь мы объединяем все элементы массива $xml в строки
             fwrite($f, implode(PHP_EOL, $part) . PHP_EOL);
         }
         unset($part);
     }
     // Заканчиваем работу с файлом
     fclose($f);
     echo 'Done.' . PHP_EOL;
 }
Example #4
0
 /**
  * @param $queryParam
  * @return array
  */
 public static function itemsList($queryParam)
 {
     if (is_numeric($queryParam)) {
         $query = new Query();
         $query->select(['_id' => false, 'number' => 'text'])->from(Number::collectionName())->where(['like', 'number', $queryParam]);
     } else {
         $query = new \yii\db\Query();
         $query->select(["CONCAT_WS(' ',last_name, first_name, middle_name) AS number"])->from(Employee::tableName())->where(['like', 'last_name', $queryParam]);
     }
     $items['results'] = array_map(function ($item) {
         $item['id'] = $item['number'];
         return $item;
     }, $query->limit(10)->all());
     return $items;
 }