2009-09-11 49 views
2

使用型号 - >找到(“全部”)返回具有以下结构的阵列:CakePHP的:可以模型 - >找到(“全部”)返回的结果而不型号名称

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

当单个模型是查询(即递归= -1),是有可能有返回的结果为具有以下结构的阵列:

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

我想我读这某处而回,但无法弄清楚如何做到这一点或如果可能。

回答

1

你也可以修改该模型的aftersave方法,以便它在执行查询后返回$ data ['Modelname'] ...实质上,它基本上是一个数组移位,并且只有$ arrayname [ 'fieldname']而不是$ arrayname ['Model'] ['fieldname']。那是你问的吗?

+0

感谢后,迭代老版本PHP。我能够通过定义afterFind方法并将结果展平在那里来实现我想要的功能。 foreach($ results as $ index => $ values){ $ results [$ index] = $ values ['ModelName']; } – 2009-09-11 20:20:00

1

也许您正在考虑可能以此方式返回的相关模型? 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模型是在一个“平”返回数组,但主要的模型应该总是包含的型号名称。

2

这是怎么回事?在PHP 5.4+

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

作品,你需要在获取结果

相关问题