我无法解决如何将模型查询功能调用到控制器中。我已经通过太多的文件来计算。也许我完全不想做什么?继续获取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子句'
答案 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的可包含行为,或者至少取消绑定这些不必要的关系。