我是cakephp的新手。我在模型中获取结果部分并在回调中使用它时尝试进行查询。但是当我尝试从模型中调试$ newArray时出现错误..在我的控制器中我有这个
function index($var = null){
if (empty($this->data)) {
}
else {
$results = array();
$getRecords = $this->Model->find('all');
$results = $this->Model->afterFind($getRecords);
debug($this->newArray);
}
}
在我的模型中,我有这个
class Model extends AppModel {
function afterFind($getRecords){
$newArray = array();
$query_string = $getRecords['Record']['column1']" ;
$results = $this->Model->query($query_string);
foreach($results as $result){
//do something and add to $newArray
}
return $newArray;
}
}
答案 0 :(得分:2)
回调是由Cake自动调用的,你不要手动调用它们(这就是重点,否则它们是正常的方法)。流程是:
Model::find
Model::beforeFind
回调(如果存在)Model::afterFind
回调(如果存在),传入已找到数据的数组
Model::afterFind
afterFind
in the manual有一些例子。您不应该从afterFind
触发进一步的查询,因为这可能会进入无限循环,每个查询都会触发更多afterFind
个回调。我也不建议在afterFind
中过于剧烈地改变你的结果,你应该只在必要时轻轻按摩结果。我无法从你的帖子中看出你想要实现的是什么,所以我不能给出任何具体的提示,但你可以在没有afterFind
的情况下通过在控制器中制定更好的查询来实现。< / p>