Cakephp 1.3 HABTM问题! :d

时间:2010-11-13 23:44:14

标签: php database cakephp

嘿,我和cakephp有这个问题,基本上我有一个很多和很多人(HABTM)模型的关系。

我的模型是分类和项目

让所有项目数据都很好,它出现为[0]['Project'][1]['Project'] ......等等

但是当我使用这种关系并从类别控制器中抽出某些类别的项目时,我得到了这些结果[0]([0]中的所有项目数据而不是[0] ['项目']),[ 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']; ?>

与HABTM关系返回数据的方式我需要这样做

<?php print $project['title']; ?> //because data is returned ['Project'][x]
<?php print $project['Feature']['title']; ?>

任何人都可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

这也使我感到沮丧。我喜欢有一组元素可用于渲染“主要”查找结果以及相关的查找结果。

这是我目前处理结果格式差异的方式。

当调用find on,例如,一个“Project”模型并且想要呈现相关的“Task”列表时,我通过函数运行结果的“Task”键进入元素,如下所示:

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;
}

这会返回一个新数组,就好像它是“主要”查找查询的结果一样。