Cakephp 1.3 HABTM выпуск! : D - PullRequest
       6

Cakephp 1.3 HABTM выпуск! : D

0 голосов
/ 14 ноября 2010

Эй, у меня возникла эта проблема с CakePHP, в сущности, у меня есть отношение модели Has And Belongs To Many (HABTM).

Моими моделями являются Category и Project

.хорошо, это выглядит как [0]['Project'], [1]['Project'] ... и т. д.

, но когда я использую отношения и вынимаю проекты с определенными категориями в контроллере категорий, я получаю эти результаты [0] (все данные проекта в [0] вместо [0] ['Project']), [1] (данные проекта и информация о связанной модели), это действительно испортило мой код, так как я использую один файл представления элемента, чтобы отобразить мои проекты.любой способ вернуть [0] ['Project'] для контроллера проекта и контроллера категорий?спасибо Крис

Привет, извините, если мой пример не ясен

у меня есть проекты и категории

, когда я извлекаю список проектов из контроллера проектов из модели моего проекта, результаты которого яget находятся в этом формате

[0]['Project'] = array(data...);
[1]['Project'] = array(data...);
[2]['Project'] = array(data...);

это то, как данные извлекаются, и это хорошо для меня, но когда я извлекаю проекты на страницу cetegory, используя отношение HABTM в контроллере категорий из модели категорий, это то, как мойданные возвращаются

['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 голосов
/ 14 ноября 2010

Это тоже разочаровало меня.Мне нравится иметь один набор элементов, которые можно использовать для визуализации как «первичных» результатов поиска, так и связанных результатов поиска.

Именно так я в настоящее время имею дело с различиями в форматах результатов.

При вызове 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;
}

Возвращает новый массив, как если бы он был результатом "первичного" запроса поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...