使用Kohana查询构建器,是否可以逐个构建我的查询。
然后对所述查询执行计数。
然后执行查询本身。
所有这些都不需要写重复的条件...一个用于计数,一个用于结果...
添加
DB::select(array('COUNT("pid")', 'mycount'))
主要查询结果只返回一条记录。
是否可以执行计数,并以某种方式删除
array('COUNT("pid")', 'mycount')
来自选择...
现在我能想到的唯一方法就是找到并替换SQL代码本身,然后只运行代码SQL ......虽然必须有更好的方法......我希望...
谢谢!
答案 0 :(得分:2)
// $db is a Database instance object
$count = $db->count_last_query();
答案 1 :(得分:2)
要做到这一点,我使用3种方法。第一个返回分页结果,第二个返回计数。第三,私有方法,拥有#1和#2使用的常见条件。如果查询需要使用JOIN或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;
}