Cakephp 1.3 HABTM问题!:D
嘿,我对cakephp有这个问题,基本上我有一个Has和Many(HABTM)模型关系 我的模型是Categroy和Project 带上所有的项目数据就可以了,结果是Cakephp 1.3 HABTM问题!:D,php,database,cakephp,Php,Database,Cakephp,嘿,我对cakephp有这个问题,基本上我有一个Has和Many(HABTM)模型关系 我的模型是Categroy和Project 带上所有的项目数据就可以了,结果是[0]['project'],[1]['project']…等等 但当我使用关系并在categories controller中拉出具有特定类别的项目时,我会得到这些结果[0](所有项目数据在[0]中,而不是[0]['project']),[1](项目数据和相关模型信息)当我使用一个元素视图文件来呈现我的项目时,这真的把我的代码搞乱
[0]['project']
,[1]['project']
…等等
但当我使用关系并在categories controller中拉出具有特定类别的项目时,我会得到这些结果[0](所有项目数据在[0]中,而不是[0]['project']),[1](项目数据和相关模型信息)当我使用一个元素视图文件来呈现我的项目时,这真的把我的代码搞乱了。有没有任何方法可以同时为项目控制器和类别控制器返回[0]['Project']?谢谢你,克里斯
嗨,对不起,如果我的例子不清楚
我有项目和类别
当我从项目模型中的项目控制器中提取项目列表时,我得到的结果是以下格式
[0]['Project'] = array(data...);
[1]['Project'] = array(data...);
[2]['Project'] = array(data...);
这就是数据提取的方式,这对我来说很好,但当我使用类别控制器中的HABTM关系从类别模型中提取每个cetegory页面的项目时,这就是我的数据返回的方式
['Project'][0] = array(data...);
['Project'][1] = array(data...);
['Project'][2] = array(data...);
正如您所看到的,这有点紧张,因为我想保留1个元素视图文件来显示我的项目,到目前为止,我的视图文件打印的数据如下
<?php print $project['Project']['title']; ?> //data is returned [x]['Project']
<?php print $project['Feature']['title']; ?>
//返回数据[x]['Project']
根据HABTM关系返回数据的方式,我需要这样做
<?php print $project['title']; ?> //because data is returned ['Project'][x]
<?php print $project['Feature']['title']; ?>
//因为数据返回['Project'][x]
有人能帮忙吗?谢谢这也让我很沮丧。我希望有一组元素可以用于呈现“主要”查找结果以及相关的查找结果 这就是我目前处理结果格式差异的方式 例如,在“项目”模型上调用find并希望呈现相关的“任务”列表时,我通过一个函数在元素中运行结果的“任务”键,如下所示:
echo $this->element('tasks/index',array(
'data'=>make_primary('Task',$data['Task'])
));
我的“make_primary”函数如下所示:
function make_primary($alias,$data) {
$d = array();
foreach($data as $item) {
$related = array();
foreach($item as $key => $val) {
if(!is_numeric($key) && is_array($val)) {
$related[$key] = $val;
unset($item[$key]);
}
}
$d[] = array_merge(array($alias=>$item), $related);
}
return $d;
}
这将返回一个新数组,就像它是“主”查找查询的结果一样。您可以发布一些用于提取数据的代码吗?请发布模型定义以及Juhana请求的代码。非常感谢Jamia,我曾想过这样做,但对未来的速度感到好奇,因为它会再次在结果中循环,如果cakephp在默认情况下会这样做,那就好了,谢谢你会尝试一下,并让你知道它是如何进行的:Dgreat-如果你想到或找到更好的方法,我很有兴趣听到它!