1

我无法解决如何将模型查询函数调用到控制器中。我已经阅读了太多的文档来计算。也许我完全错了?继续得到 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子句'中的未知列'Plan'

4

1 回答 1

1

基本上 $this->paginate 不接受查询结果作为第一个参数。如果您非常喜欢模型中的数据库逻辑,请这样做:

模型

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 的可包含行为,或至少取消绑定这些不必要的关系。

于 2011-01-21T22:52:24.160 回答