@lexstile

Как правильно организовать получение списка данных с дополнительным полем — количество?

Есть такой запрос:
public function getAll($data) {
		$params = [
			'user_id' => $data->user_id,
			'period' => $data->period,
			'limit' => $data->limit,
			'offset' => $data->offset,
		];

		return $this->db->row('SELECT id, amount, DATE_FORMAT(date, "%d.%m.%Y %H:%i:%s") as date FROM enrollments WHERE user_id = :user_id && status = 1 && UNIX_TIMESTAMP(date) > :period ORDER BY id DESC LIMIT :limit OFFSET :offset', $params);
	}

Хочется, чтобы этот запрос возвращал и количество данных всего - без offset и limit, но помещал их отдельно от массива элементов, можно ли как-то это сделать?
Мне очень не хочется делать отдельный второй запрос на подсчет элементов.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что мешает после получения всех элементов просто взять размер полученного массива?
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Без дополнительного запроса нельзя.
Есть разные ухищрения, которые позволят замаскировать дополнительный запрос, но по факту это будет именно он.
Но при этом есть риск натупить с производительностью.
Так что лучше не пытаться усидеть на двух стульях одной, ээээ..., туловищем, а сделать два отдельных запроса.
Да, это неудобно. Но неправильный подсчет полного количества строк на большой таблице может создать очень сильную нагрузку, вплоть до того, чтобы полностью положить систему. Так что лучше не экспериментировать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы