我正在使用cake的回调方法,beforeFind会动态地为每个查询添加一些条件。一开始一切顺利,并认为它将最大限度地缩短开发时间..直到我做了一个ajax请求,在某些模型上执行查找..当这种情况发生时似乎无法工作。 基本上我正在添加一些查询条件
public function beforeFind($query){
if(empty($this->aff)){
throw new Exception("Username cannot be null.");
}
//set active flag
$query["conditions"]["MsGa.active_flag"] = "active";
if(empty($query["conditions"]["OR"])){
$query["conditions"]["OR"] = array();
}
$query["conditions"]["OR"][] = array("FIND_IN_SET('".$this->aff."', MsGa.aff)");
$query["conditions"]["OR"][] = array("MsGa.aff" => "");
if(!empty($this->type)){
$query["conditions"]["MsGa.type"] = $this->type;
}
return $query;
}
它是否通常在ajax请求中工作,当在模型上进行查找时(当然..)?如果不是这样的话?是否可以显式调用它?
[编辑]
这是启动ajax请求时调用的函数:
public function getResultsCount($data){
return $this->find("count", array(
"conditions" => $this->_setupConditions($data)
));
}
并且
_setupConditions
返回一组查询条件......
返回结果集的函数:
public function getResults($data){
return $this->find("all", array(
"conditions" => $this->_setupConditions($data)
));
}
每当我启动ajax请求并执行查询时,都会返回一定的计数。并且当返回实际结果集时,计数函数实际显示的记录较少。 。所以我的想法是,可能是beforeFind()没有被执行,因为如果我注释掉这个回调,结果集上的计数和记录数是相等的。我有点困惑