2009-11-09 197 views
0

我正在創建一個小時間表應用程序。時間表有運動員,每個運動員都有個人分段時間(如跑步或賽車駕駛)CakePHP關聯問題

運動員有許多跑步,跑步屬於運動員,運動員有和有許多時間表(反之亦然)。時間表hasMany運行,最後一個運行belongsTo時間表。

當我在視圖中添加新跑步時,我無法獲得除選擇框中的athlete_id之外的任何內容。我真的很想擁有他們的名字。而不是

<?php echo $run['athlete_id'];?>,我試過<?php echo $athlete['Athlete']['last_name'] ?>,但我似乎無法得到它的工作。任何幫助將不勝感激。謝謝!

回答

1

不知道你是如何建立你的表格/數據很難說,但我會怎麼做。

在RunController添加

$athletes = $this->Run->Athlete->find('list'); 
$this->set('athletes', $athletes); 

,然後在視圖中使用這種形式的輔助線。

​​

這應該工作,也有使用「緊湊」,使之更容易一些,但上面的應該正常工作的一種方式。

---- BEGIN編輯----

我做了一些研究,發現了緊湊的方法。

在你RunController使用

$athletes = $this->Run->Athlete->find('list'); 
$this->set(compact('athletes')); 

,然後在查看使用

<?php echo $form->input('Run.athlete_id'); ?> 

和形式助手會自動找到壓實運動員陣列和構建選擇。

---- END編輯----

希望這會有所幫助。

乾杯, 院長

0

嘗試打印出$ run:print_r($ run)的內容並查看['Athlete']是否在那裏。

如果沒有,您可能必須手動包含運動員模型,當您執行您的運行查詢時: $ this-> Run-> contains('Athlete');

0

不要忘了使用模型類的displayField財產即

<?php 
    class Athlete extends AppModel { 
     public $name = "Athlete"; 
     public $displayField = "name"; // the field name that has the athletes name in it 
    } 
?> 

http://book.cakephp.org/view/438/displayField