Kohana 3.2调用未定义的方法Database_MySQL_Result :: offset()

时间:2013-05-11 01:39:44

标签: database kohana

当我尝试使用DB :: select而不是ORM时会发生这种情况。 查询作为对象返回,但会显示错误。

代码:

$bd_userdata -> offset($pagination -> offset) -> limit($pagination -> items_per_page) -> find_all() -> as_array();

错误:

ErrorException [ Fatal Error ]: Call to undefined method Database_MySQL_Result::offset()

这是否意味着在将它们发送到分页中的偏移之前我必须计算行数?


当我尝试$query->count_all()时,收到错误消息:

未定义属性:Database_Query_Builder_Select :: $ count_all

我尝试count($query),但我得到了:

没有使用表[SELECT * LIMIT 4 OFFSET 0]


以下是解决方案:

$results = DB::select('*')
->from('users')
->where('id', '=', 1)
->limit($pagination->items_per_page)
->offset($pagination->offset)->execute();

还有一个柜台:


$count = $results->count_all();

我之前是这样做的,反之亦然。这就是为什么它不起作用。

1 个答案:

答案 0 :(得分:2)

如您所见,execute()返回Database_Result对象,该对象没有QBuilder的功能。您必须在调用execute之前应用所有条件(where,limit,offset等)

以下是分页的简单示例:

// dont forget to apply reset(FALSE)!
$query = DB::select()->from('users')->where('username', '=', 'test')->reset(FALSE);
// counting rows
$row_count = $query->count_all();
// create pagination
$pagination = Pagination::factory(array(
        'items_per_page'    =>  4,
        'total_items'       =>  $row_count,
    ));
// select rows using pagination's limit&offset 
$users = $query->offset($pagination->offset)->limit($pagination->items_per_page)->execute();