2009-06-11 49 views
0

假設表格如下結構:CakePHP - 關係表中的相關模型,以下拉菜單顯示?

註冊參與者模型:

<?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') 
    ); 
} 
?> 

當我這樣做,我認爲: 回聲$形式 - >輸入( 'RegisteredParticipant.EventLocation.moderator');

它返回EventLocation.id s的下拉列表,而不是像我預期的EventLocation.moderators。任何想法可能是什麼?

回答

0

Duh。 $this->RegisteredParticipant->EventLocation->find()沒有使用'all',因爲它是param。

0

您可以使用find('list')作爲下拉菜單。 E.g:

$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' 
); 

它可以在您的視圖自動錶單助手來處理。

1

沒有人提到將$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') 
    ); 
}