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(); }
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(); }
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; }
/** * @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; }