При использовании Kohana DB, как избежать дублирования кода при необходимости подсчета для разбивки на страницы?

Используя построитель запросов Kohana, можно ли построить мой запрос по частям.

Затем выполните подсчет по указанному запросу.

Затем выполните сам запрос.

Все без необходимости писать повторяющиеся условные выражения … один для подсчета и один для результатов …

Добавление

DB::select(array('COUNT("pid")', 'mycount')) 

К основному запросу приводит только возврат одной записи.

Возможно ли выполнить счет, и как-то удалить

 array('COUNT("pid")', 'mycount') 

от выбора …

Прямо сейчас единственный способ, которым я могу думать, это найти и заменить на самом SQL-коде, а затем просто запустить указанный код SQL … должен быть лучший способ, хотя … Надеюсь …

Благодаря!

Solutions Collecting From Web of "При использовании Kohana DB, как избежать дублирования кода при необходимости подсчета для разбивки на страницы?"

Для этого я использую 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();