CakePHP - Связанные модели в таблице отношений, отображаемые в раскрывающемся списке? - PullRequest
0 голосов
/ 11 июня 2009

С учетом следующих структур таблицы:

Модель зарегистрированного участника:

<?php
class RegisteredParticipant extends AppModel {
var $name = "RegisteredParticipant";
var $primaryKey = "id";
var $belongsTo = array(
  'EventLocation' => array('className' => 'EventLocation'),
  'RegistrationStatus' => array('className' => 'RegistrationStatus'),
  'Specialty' => array('className' => 'Specialty')
);
var $hasMany = array(
  'DietaryRestriction' => array('className' => 'DietaryRestriction')
);
}
?>

Модель местоположения события:

<?php
class EventLocation extends AppModel {
   var $name = 'EventLocation';
   var $primaryKey = 'id';
   var $belongsTo = array(
      'Event' => array('className' => 'Event', 'foreignKey' => 'event_id'),
      'Location' => array('className' => 'Location', 'foreignKey' => 'location_id')
   );
}
?>

Когда я делаю это на мой взгляд: echo $ form-> input ('RegisteredParticipant.EventLocation.moderator');

Возвращает выпадающий список EventLocation.id s, а не EventLocation.moderators, как я ожидал. Есть идеи, что бы это могло быть?

Ответы [ 3 ]

1 голос
/ 26 сентября 2010

никто не упомянул добавление $displayField к модели, подобной этой.

class EventLocation extends AppModel {
    var $name = 'EventLocation';
    var $displayField = 'moderators';
    var $primaryKey = 'id';
    var $belongsTo = array(
        'Event' => array('className' => 'Event', 'foreignKey' => 'event_id'),
        'Location' => array('className' => 'Location', 'foreignKey' => 'location_id')
    );
}
0 голосов
/ 14 июня 2009

Вы можете использовать find ('list') для выпадающих меню. Например:

$locations = $this->RegisteredParticipant->EventLocation->find('list', array(
    'fields' => array('some_fields')
));
$this->set('locations', $locations);

Вы получите обратно массив, как:

array(
    'id_1' => 'some_field_contents',
    'id_2' => 'some_field_contents',
    'id_3' => 'some_field_contents'
);

Что может быть обработано в вашем представлении автоматически помощником по форме.

0 голосов
/ 11 июня 2009

Duh. $this->RegisteredParticipant->EventLocation->find() не использовал «все» в качестве параметра.

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