我正在创建一个自定义数据源,当我请求 find('list') 时遇到问题。find('all') 在我的控制器中完美返回我想要的,但 find('list') 只返回一个空数组。
有趣的是,如果我在读取函数中的数据源中执行 die(Debug($results)),那么我会正确获得我的 find('list') 数组,但如果我返回它,我会在我的控制器中获得一个空数组。有任何想法吗?
下面的代码:
public function read(Model $model, $queryData = array(), $recursive = null) {
    if ($queryData['fields'] == 'COUNT') {
        return array(array(array('count' => 1)));
    }
    $this->modelAlias = $model->alias;
    $this->suffix = str_replace('Flexipay', '', $model->alias);
    if(empty($model->id)){
        $this->url = sprintf('%s%s%s', $this->sourceUrl, 'getAll', Inflector::pluralize($this->suffix));
    }
    $r = $this->Http->get($this->url, $this->config);
    if($r->isOk()){
        $results_src = json_decode($r->body, true);
        if(is_array($results_src)){
            //$this->find('list');
            if($model->findQueryType == 'list'){
                return $this->findList($queryData, $recursive, $results_src);
            }
            //$this->find('all');
            foreach($results_src['PortalMandantenResponses']['portalMandantenResponses'] as $r){
                $results[] = $r;
            }
            if(!empty($results)){
                $e =  array($model->alias => $results);
                return $e;
            }
        }
    }else{
        //
    }
    return false;
}
我的回应 die(debug(array($model->alias => $results);
(int) 0 => array(
    'Mandant' => array(
        'ns2.id' => (int) 79129,
        'ns2.name' => 'company a'
    )
),
(int) 1 => array(
    'Mandant' => array(
        'ns2.id' => (int) 70000,
        'ns2.name' => 'company b'
    )
),
控制器代码在这里:
    public function test2(){
    //$a = $this->User->find('list');
    //die(debug($a));
    $this->loadModel('Pay.Mandant');
    $a = $this->Mandant->find('list', array('fields' => array('ns2.systembenutzernr', 'ns2.systembenutzernrBezeichnung')));
    die(debug($a));
}