Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp:can模型->;find(';all';)返回不带模型名的结果_Php_Cakephp - Fatal编程技术网

Cakephp:can模型->;find(';all';)返回不带模型名的结果

Cakephp:can模型->;find(';all';)返回不带模型名的结果,php,cakephp,Php,Cakephp,使用Model->find('all')返回具有以下结构的数组: array( 0 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...), 1 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...)

使用Model->find('all')返回具有以下结构的数组:

array(
  0 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  1 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  ...)
array(0 => /* Model1 fields*/, 1 => /* Model1 fields*/, etc...)
当查询单个模型时(即递归=-1),是否可以将结果作为具有以下结构的数组返回:

array(
  0 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  1 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  ...)
array(0 => /* Model1 fields*/, 1 => /* Model1 fields*/, etc...)

我想我不久前在某个地方读过这篇文章,但不知道该怎么做,也不知道这是否可行

也许您正在考虑可能以这种方式返回的相关模型?AFAIK Cake查询结果非常标准化,这是一件好事

array(
    0 => array(
        'Model' => array(
            'id',
            'field1',
            ...
         ),
        'belongsTo/hasOneModel' => array(
            'id',
            'field1',
            ...
         )
        'habtm/hasManyModel' => array(
            0 => array(
                'id',
                'field1',
                ...
            ),
            1 => array(
                ...
            )
        )
    ),
    1 => array(
        'Model' => array(
            ...
        ),
        ...
    )
)

如您所见,相关的HABTM或hasMany模型以“平面”数组返回,但主模型应始终包含模型名称。

您还可以修改该模型的aftersave方法,使其在执行查询后返回$data['Modelname']。。。本质上,它基本上是一个数组移位,您将只有$arrayname['fieldname'],而不是$arrayname['Model']['fieldname']。这就是你要问的吗?

这个呢?在PHP5.4中工作+

$result = array_map( function ($elem) {
        return $elem['YourModelName'] ;
    } ,$this->Tagcloud-> find('all')
);

对于较旧的php版本,您需要在获取结果后进行迭代

谢谢。通过定义afterFind方法并将结果展平,我能够实现我想要的功能。foreach($results as$index=>$values){$results[$index]=$values['ModelName'];}