2014-02-10 68 views
1

即時通訊新的蛋糕(和愛它),但我遇到了一個問題,我似乎無法找到解決方案。林肯定有一個明顯的答案,所以我提前如果我問一個愚蠢的問題apols。查找來自不同模型的數據使用Cake

好的,在這裏。

我想建立使用蛋糕PHP版本2

我目前所面對的兩個模型一個簡單的信息系統,一個處理用戶(用於洛進出),另一個處理消息。

郵件表我有以下欄目:

id | sender_id | recipient_id | subject | body 

我MessagesController.php內容如下:

class MessagesController extends AppController { 
public function recent_messages() { 
    if (empty($this->request->params['requested'])) { 
     throw new ForbiddenException(); 
    } 
    return $this->Message->find(
     'all' 
    ); 
}  
} 

我的觀點是坐落在我的元素,它實際上顯示爲下降在我的導航欄中。這是我的看法:

<?php 
$messages = $this->requestAction('/messages/recent_messages'); 
?> 

<?php 
foreach ($messages as $message): ?> 
    <li> 
    <a href="#"> 
<div> <strong>Username of sender goes Here</strong></div> 
<div><?php echo $message['Message']['subject']; ?></div> 
    </a> 
</li> 
<li class="divider"></li> 
<?php endforeach; ?> 

我想要做的是能夠使用sender_id獲得消息發件人的實際用戶名。只是澄清sender_id值實際上是users表中用戶的id(主鍵)。

最初我以爲這將通過設置關聯來完成,但我無法看到如何。

如果有人可以提供任何意見,我將非常感激。

回答

1

爲什麼要使用這個 - $> requestAction

如果你的觀點是recent_messages.ctp你已經調用recentMessages我不明白()。

然後,如果你設置你的人際關係,你已經取回所有的數據,你需要

$message['Sender']['username'] 

包含你正在尋找的信息。 (或者$message['User']['username']這取決於你如何編寫模型)。

如果沒有閱讀有關設置關係的Manual

總之所有你有你的消息模型做的是

$belongsTo = array(
    'Sender' => array(
      'className' => 'User', 
      'foreignKey' => 'sender_id' 
     ) 
) 
+0

嗨arilia,謝謝你。我剛剛提出瞭解決方案,它與你所陳述的相同,但是我使用$ message ['User'] ['username']訪問數據,但這就是我如何在$ belongsTo數組中設置我的別名。 我正在使用$ this-> requestAction,因爲它的一個元素我認爲這是一個使用數據的元素的正確方法,但是根據您的評論我假設它不會,並會查看它。 –

+0

在我看來,它打破了MVC模式。相反,您可以將數據從控制器傳遞到視圖,然後從視圖傳遞到元素 – arilia

0

一個進一步的思考。

看來你正在從視圖中執行requestAction。我認爲它只能從控制器完成,然後通過$ this-> set('messages',$ message)命令將結果傳遞給視圖。

如果我錯誤地解釋了你在做什麼,那麼我很抱歉。

相關問題