Controller的模型查询功能::如何在Controller中调用w / pagination?

时间:2011-01-21 17:59:13

标签: php mysql cakephp mysql-error-1054

我无法解决如何将模型查询功能调用到控制器中。我已经通过太多的文件来计算。也许我完全不想做什么?继续获取MySQL错误(下面的错误)。

计划::模型:

function getActive() 
{
$findParameters = array(
    'limit' => 10,
    'order' => array('Plan.monthly_cost' => 'asc'),
    'conditions' => array('PlanDetail.active' => 1)
);
return $this->find('all', $findParameters);
}

计划::控制器:

function search() {
    $this->Plan->recursive = 2; //*** Modified by Jason: Recursion needs to be corrected with better method. ***//
    $active = $this->Plan->getActive();
    $this->set('plans', $this->paginate($active));
}

注意(8):数组到字符串的转换[ROOT .... 警告(512):SQL错误:1054:未知列'计划'在' where子句'

1 个答案:

答案 0 :(得分:1)

基本上$ this-> paginate不接受查询结果作为第一个参数。如果您非常希望在模型中使用DB逻辑,请执行以下操作:

<强>模型

function getActiveConditions() {
    retrun array(
       'limit' => 10,
       'order' => array('Plan.monthly_cost' => 'asc'),
       'conditions' => array('PlanDetail.active' => 1)
    );
}
控制器中的

function search() {
    $this->Plan->recursive = 2;
    $activeConditions = $this->Plan->getActiveConditions();
    $this->set('plans', $this->paginate($this->Plan, $activeConditions));
}

解释:paginate方法将作为第一个参数传递的模型分页(或者如果它是null获取控制器的默认模型),并使用第二个参数对结果应用一些限制。

检查此递归= 2的可包含行为,或者至少取消绑定这些不必要的关系。