2010-09-19 30 views
1

這可能是一個愚蠢的問題,但我無法在任何地方找到明確的答案。如何訪問控制器中的模型數據?如果可以,如何實現?可以在CakePHP中訪問控制器中的模型數據嗎?

我試過如下:

$this->set('mydata', $this->Model->find('all', 'conditions' => array('id' => 'someID'))); 

,並通過此控制器訪問它:

$mydata['Model']['field'] 

但似乎僅是意見。

有沒有辦法訪問控制器中的模型數據?原因是我需要在關聯模型(belongsTo)上執行計算,這些計算不能通過隱藏字段或任何東西來完成,因爲關聯模型的ID直到提交表單後纔會傳遞。

任何幫助將不勝感激!

回答

1

嗯,怎麼樣:

$myData = $this->Model->find('all', 'conditions' => /* ... */); 

$myData['Model']['field']; 
$myData['RelatedModel']['field']; 

$this->set('mydata', $myData); 

足夠:)簡單

型號:: find()方法返回你的數據,你並不需要直接傳遞給控制器​​::集() ,你可以先把它弄混,然後傳遞給你的觀點。但是,我建議不要這樣做,如果你有一個Model :: messWithData($ data)並讓模型處理數據,讓控制器處理應用程序邏輯,那麼會更好。請記住,胖模型,瘦身控制器

+1

感謝您的迴應!我想要做的是執行計算,它使用表單提交中的一些數據並將其與來自關聯的belongsTo模型的數據混合。你是說我應該在執行計算的關聯模型中有一個函數,然後在控制器中調用它? – Justin 2010-09-19 16:32:29

+1

取決於你想要做什麼,但我的答案基本上是「是」。 :)最好將你的數據改變的東西保存在你的模型中(這是他們的目的!),除非它是你只會在視圖中顯示的東西(即,如果它只是一個格式問題 - 在這種情況下,我'd使用一個自定義的助手來準備顯示的數據)。 – 2010-09-19 16:38:07

+0

謝謝,我已經開始在整個項目中實現這個功能,它確實使代碼更具可讀性,以便在模型中具有所有數據庫查詢! – Justin 2010-09-20 15:35:26

相關問題