Cakephp:can模型->;find(';all';)返回不带模型名的结果
使用Model->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*/), ...)
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'];}