Запуск Model :: найти в цикле for в CakePHP v1.3 - PullRequest
0 голосов
/ 27 мая 2010

Как мне добиться следующего результата в cakephp:

В моем приложении тема связана с категорией, категория связана с городом, а город окончательно связан с государством

другими словами:
тема принадлежит категории, категория принадлежит городу, город принадлежит государству ..

Теперь в действии index контроллера тем я хочу выяснить все темы, а также город и штат.

Как я могу это сделать.

Я легко могу сделать это с помощью пользовательского запроса (функция $ this-> Model-> query ()), но тогда я столкнусь с трудностями нумерации страниц.

Я пытался сделать так

function index()
{
    $this->Topic->recursive = 0;
    $topics = $this->paginate();
    for($i=0; $i<count($topics);$i++)
    {
        $topics[$i]['City'] = $this->Topic->Category->City->find('all', array('conditions' => array('City.id' => $topics[$i]['Category']['city_id'])));
    }
    $this->set(compact('topics'));
}

Метод, который я принял, не очень хороший (выполнение запроса в цикле)

Использование рекурсивного свойства и установка его на максимальное значение (2) ухудшит производительность и не даст мне информацию о состоянии.

Как мне решить это?

Пожалуйста, помогите

Спасибо

Ответы [ 2 ]

1 голос
/ 30 мая 2010

Когда вы используете сдерживаемое поведение, вам не нужно устанавливать рекурсивный уровень. Это будет отрегулировано автоматически CakePHP.

1 голос
/ 27 мая 2010

Ну, вы можете сделать пару вещей:

  1. Установите для параметра recursive значение 3 (не рекомендуется по причинам, которые вы уже упомянули).
  2. Используйте поведение Containable. Думаю, документы, на которые я ссылаюсь, предоставляют довольно твердый набор инструкций по использованию.

К сожалению, я не могу говорить о влиянии поведения Containable на нумерацию страниц.

...