Используя построитель запросов Kohana, можно ли построить мой запрос по частям.
Затем выполните подсчет по указанному запросу.
Затем выполните сам запрос.
Все без необходимости писать повторяющиеся условные выражения … один для подсчета и один для результатов …
Добавление
DB::select(array('COUNT("pid")', 'mycount'))
К основному запросу приводит только возврат одной записи.
Возможно ли выполнить счет, и как-то удалить
array('COUNT("pid")', 'mycount')
от выбора …
Прямо сейчас единственный способ, которым я могу думать, это найти и заменить на самом SQL-коде, а затем просто запустить указанный код SQL … должен быть лучший способ, хотя … Надеюсь …
Благодаря!
Для этого я использую 3 метода. Первый возвращает результаты с разбивкой по страницам, второй – счет. В-третьих, частный метод содержит общие условия, используемые # 1 и # 2. Если в запросе необходимо использовать JOINs или WHERE или что-то в этом роде, все идет на # 3. Таким образом, нет необходимости повторять запрос.
/* 1 */ public function get_stuff($pagination = false){ $query = DB::select(/* ... columns here ... */); $query = $this->get_stuff_query($query); if($pagination) $query->limit($pagination->items_per_page)->offset($pagination->offset); return $query->execute(); } /* 2 */ public function get_stuff_count(){ $query = DB::select(array('COUNT("id")', 'total_rows')); $query = $this->get_stuff_query($query); $result = $query->execute(); return $result->get('total_rows',0); } /* 3 */ private function get_stuff_query($query){ $query->from(/* tablename */); $query->join(/* ... */); $query->where(/* ... */); return $query; }
Использовать count_last_query ()
// $db is a Database instance object $count = $db->count_last_query();