2012-05-04 119 views
1

我昨天從cakephp開始,跑在一個問題:從其他控制器的訪問控制器

我有一個「ImagesController」和「UsersController」。

ImageView顯示圖像列表。用戶使用用戶標識保存在圖像表中。

我現在需要將用戶標識轉換爲用戶表中的名稱。我用傭工試了一下,但沒有成功,因爲我無法訪問$this->User->find($id)

我已經在谷歌搜索,但似乎我命名它錯了,所以它沒有得到結果。

感謝您的幫助!

回答

2

您正在尋找的是將您的圖像模型與您的用戶模型相關聯。 article in the book真的值得一讀!

關聯後,您可以直接獲取該名稱而不調用任何函數。從我的頭頂,你會需要的是在你的圖像模型補充一點:

public $belongsTo = array('User'); 

然後從您的視圖中的用戶名應提供以下:

$data_var['Image']['User']['name']; 

哪裏$data_var是查看保存圖像數據的變量。

+0

$ belongsTo是重點!謝謝!但它不接受我的條件我提出: '公共功能指數(){$ 條件=陣列( '遞歸'=> -1, '訂單'=>數組( 'ID DESC'), 'limit'=> 15, 'page'=> 1, ); pr($ this-> Image-> find('all',$ conditions));' – Moritz

+0

這是因爲您的條件數組有缺陷。 '遞歸'不會進入那裏。嘗試將它與第一個示例[此處](http://book.cakephp.org/2.0/en/models/retrieving-your-data.html)進行比較,看看它應該是什麼樣子。 – Oldskool

+0

天啊,非常感謝你:-) – Moritz

1

它看起來像你有兩個型號,ImageUser。如果您想要撥打$this->User->find($id),可以將模型添加到cotroller頂部的$uses變量中。

var $uses = array('Image','User'); 

例如。

+0

嘿,耶,幾乎是我想要的!我怎樣才能從它調用函數?像'$ this-> User-> getUserNameById(1);' 還有更好的方法來做到這一點嗎? – Moritz

+0

這就是你所說的。或者,您可以設置模型關聯,因此調用'$ this-> Image-> find()'也會拉入User數據。這裏是關於這方面的文檔。 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html –

+0

嘿,好像不是我想要的樣子: '<?php class Image擴展AppModel public $ name ='Image'; 公共$的hasMany =陣列( '用戶'=>數組( '的className'=> '用戶', '條件'=>數組( 'User.verified'=> '1') ) ); }' 只需返回舊的Image-> find()輸出。 – Moritz