我正在创建自定义数据源,当我请求find('list')时遇到问题。 find('all')在我的控制器中完美地返回我想要的东西,但find('list')只返回一个空数组。
有趣的是,如果我在读取函数中的数据源中执行死(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));
}
答案 0 :(得分:0)
使用,
$a = $this->Mandant->find('list', array('fields' => array('ns2.systembenutzernr', 'ns2.systembenutzernrBezeichnung')));
$this->set(compact('a'));
You can use $a for the dropdown creation in view file.
答案 1 :(得分:0)
我在编写自定义模型时遇到了同样的问题,虽然我不知道你的案例中的原因是否相同,但你应该看看同一个地方。
在Model.php中有一个函数_findList($ state,$ query,$ results),我的问题是你在find()调用中指定的字段必须与$ results结构完全匹配,否则在结尾处_findList()函数调用:Hash::combine($results, $query['list']['keyPath'], $query['list']['valuePath'], $query['list']['groupPath'])
返回空数组。 {n} .MODELNAME.id等的keyPath必须与$ results中指定的模型名称匹配,例如
[0] => ['MODELNAME'] = array()
[1] => ['MODELNAME'] = array()
在我的情况下,我的keyPath和valuePath的MODELNAME值与结果数组中的值不同
希望有所帮助