CakePHP之前发现

时间:2014-11-05 17:57:33

标签: ajax cakephp callback

我正在使用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()没有被执行,因为如果我注释掉这个回调,结果集上的计数和记录数是相等的。我有点困惑

0 个答案:

没有答案