Как получить результаты из таблицы базы данных на основе результатов из другой таблицы в CakePHP? - PullRequest
1 голос
/ 27 февраля 2011

Например, в моей базе данных есть следующие таблицы:

  • Люди
  • Группы

И в таблице Люди у меня есть следующие столбцы:

  • Имя
  • Дата рождения
  • * Группа 1018 *

В таблице Groups у меня есть следующие столбцы:

  • Имя
  • Цвет

Теперь я хочу получить результаты из своей базы данных, чтобы составить список всех People . Поэтому я бы использовал это:

$this->set('people', $this->Person->find("all"));

И, на мой взгляд, я бы просматривал возвращаемый массив и отображал его. Теперь я также хочу выяснить для каждого человека в списке, какого они цвета и имени группы (получено из таблицы groups ).

Как мне поступить об этом в CakePHP.

Ответы [ 2 ]

4 голосов
/ 27 февраля 2011

Сначала убедитесь, что ваши модельные отношения определены.Во-вторых, вы можете рассмотреть возможность использования полей «id» для связанных таблиц (я полагаю, вы это сделали и, возможно, просто не включили их в исходные определения таблицы вопросов).

И да, запустите debug ($ this-> Person-> find ("all")), как заметил Elwhis, чтобы увидеть, что выводит ваш массив.

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

3 голосов
/ 27 февраля 2011

Вы должны установить атрибут recursive.Но я думаю, это должно работать со значением по умолчанию.Поместите эту строку в свой контроллер debug($this->Person->find("all")) и проверьте, не содержат ли данные уже нужную вам информацию о группе.

Если нет, попробуйте установить $this->Person->recursive = 1; перед вызовом функции find()

Для получения дополнительной информации о recursive: http://book.cakephp.org/view/1063/recursive

...