2010-08-14 3 views
0

Привет, у меня есть две модели пользователя и города, где пользователь принадлежит к городу, а в городе много пользователей. На столе города у меня есть city_id и city_name.CakePHP one to many Combo box

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

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

ответ

1

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

$this->displayName = 'city_name'; 

Обратите внимание, что в версии 1.3, это выглядит как имя атрибута является displayField, а не displayName.

+0

CakePHP будет использовать «заголовок» по умолчанию, предполагая, что такое поле присутствует, а $ this-> displayField не определено. – Wayne

1

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

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

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