2013-05-11 44 views
0

當我嘗試使用DB :: select而不是ORM玩時發生這種情況。 查詢作爲對象返回,但出現錯誤。Kohana 3.2調用未定義的方法Database_MySQL_Result :: offset()

代碼:

$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(); 

以前我一直做它,周圍的其他方法。這就是爲什麼它不起作用。

+0

是什麼類型'$ bd_userdata'? – 2013-05-11 01:43:03

+0

這只是簡單的:DB :: select() - >從('users') - > where('username','=','test') - > execute(); – pt0 2013-05-11 01:44:49

回答

2

正如你所看到的,​​返回Database_Result對象,它沒有QBuilder的功能。您必須應用之前的所有條件(其中,限制,補償等),然後調用execute

下面是一個簡單的例子與分頁:

// 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(); 
相關問題