[英]CakePHP 1.3 paginate with custom query
正如其他地方所建議的,我已經設法為模型中的自定義查詢覆蓋了默認方法,
function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array())
和
function paginateCount($conditions = null, $recursive = 0, $extra = array())
不幸的是,這種方法超越了該模型的所有分頁,並影響了其他地方的其他分頁。 我找到了一些代碼,可以幫助我選擇是否要基於變量使用自定義分頁,例如
在我的模型中
var $useCustom = false;
function paginateCount($conditions = null, $recursive = 0, $extra = array())
{
if(!$this->useCustom)
return parent::paginateCount($conditions, $recursive);
// code to handle custom paginate count here
}
我發現使用此方法會給我一個錯誤,
致命錯誤:在...中調用未定義的方法AppModel :: paginateCount()。
我究竟做錯了什么? 我以為我在分頁函數中也需要類似的代碼? 我是否也可以在控制器中設置此變量,也就是$this->useCustom = 'true';
深入研究代碼后,我發現paginateCount和paginate方法在模型中或其他任何地方都不存在,這就是為什么我不能調用它們的原因。 解決方案是從主控制器復制代碼,以測試是否存在超控
對於那些想要類似解決方案的人,請在paginateCount中使用以下內容
if(!$this->useCustom)
{
$parameters = compact('conditions');
if ($recursive != $this->recursive) {
$parameters['recursive'] = $recursive;
}
$count = $this->find('count', array_merge($parameters, $extra));
return $count;
} else {
custom method...
}
和分頁使用
if(!$this->useCustom)
{
$parameters = compact('conditions', 'fields', 'order', 'limit', 'page');
if ($recursive != $this->recursive) {
$parameters['recursive'] = $recursive;
}
$results = $this->find('all', array_merge($parameters, $extra));
return $results;
} else {
custom method...
}
希望這對其他人有幫助。
我認為您需要在函數之前以這種方式使用范圍解析運算符的public關鍵字。
即公共功能 paginateCount(....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.