CakePHP Combo box один ко многим - PullRequest
0 голосов
/ 15 августа 2010

Эй, у меня есть две модели: Пользователь и Город, где пользователь принадлежит городу, а в городе много пользователей. В таблице городов у меня есть city_id и city_name.

Я использовал торт для выпечки и создал модель пользователя, и когда я добавляю нового пользователя, в поле со списком под полем города вместо названия отображается идентификатор города.

Я пробовал несколько способов показать название города вместо идентификатора, но мне не удалось.

Ответы [ 2 ]

1 голос
/ 15 августа 2010

Торт требует определенной раскладки стола для автоматизации работы. Роб объяснил, как обойти это. Но если вы хотите избежать написания дополнительных строк кода, вам следует соответствующим образом организовать ваши таблицы.

CREATE TABLE `cities` (
  `id` int(11) AUTO_INCREMENT NOT NULL,
  `name` varchar(25) NOT NULL,
  PRIMARY KEY (`id`)
)

Когда вы выпекаете эту модель, Cake автоматически использует name в качестве отображаемого имени. Это будет применяться к каждой таблице, которую вы создаете. Кроме того, если вы используете id для таблицы, она автоматически узнает, как ссылаться на нее как на внешний ключ из других таблиц как city_id.

1 голос
/ 15 августа 2010

Вы не упоминаете, что пытались, но обычно вы используете свойство displayName модели, чтобы установить поле, в котором следует использовать «заголовок» записи.В вашем случае я бы подумал:

$this->displayName = 'city_name';

Обратите внимание, что в версии 1.3 похоже, что имя атрибута равно displayField, а не displayName.

...