2010-06-29 172 views
0

我最近開始使用CakePHP,並試圖定義用戶特定的「字段」首選項。基本上,我希望每個用戶都能夠指定他/她希望在表格中看到哪些字段。CakePHP:有沒有辦法在hasAndBelongsToMany的定義中包含變量?

爲此,我有一個用戶表,一個字段表和一個fields_users表。最後一個表只是一個field_id和user_id,所以代碼知道將該字段與該用戶相關聯。

到目前爲止,我已經爲'User'和'Fields'的控制器/模型創建了一個控制器/模型,並將它們與hasAndBelongsToMany屬性鏈接起來。例如,在 '場' 的模式,我已經定義了以下屬性:

` 變量$ hasAndBelongsToMany =陣列(

'User' => array (
    'className' => 'User', 
    'foreign_key' => 'field_id', 
    'join_table' => 'fields_users', 
    'fields' => array('User.id'), 
    'conditions' => array('User.id' => 2), 
    'unique' => false, 

) );`

正如你可以看到上面,數組'條件'部分中的'User.id'是硬編碼的。

我的問題是這樣的:我怎樣才能讓這個屬性的'條件'部分被設置爲當前用戶的ID?

顯然,我只關心當前用戶的字段偏好,但此時我正在獲取每個人的用戶信息。

將它設置爲初始屬性定義中的一個變量不起作用,我不知道我應該在什麼時候這樣做(或者如果完全有更好的方法)。 (在beforeFilter中沒有工作,我似乎無法從模型的__construct函數中訪問$ _SESSION)

回答

0

Do it from the controller。您可以通過$this->Auth->user('id')獲取當前用戶ID。

+0

讓我更清楚 - 我知道如何獲取用戶ID等,並且我知道如何從控制器和模型中設置'hasAndBelongsToMany'屬性。問題是,即使我在控制器的'beforeFilter'函數中修改'hasAndBelongsToMany'屬性,看起來使用該屬性的關鍵代碼已經被執行,並且條件不被考慮在內 我想要的全部是能夠獲得某種數據結構,包括當前用戶指定的字段信息。現在,我可以得到這個,但我可以爲每個用戶獲得。 – GTT 2010-06-30 15:14:50

+0

'beforeFilter()'中的代碼是什麼? – bancer 2010-06-30 15:48:00

+0

我只是將其更改爲以下內容,現在似乎正在開展工作。 (){ 'function beforeFilter(){ \t \t parent :: beforeFilter(); \t \t $ user_id = $ this-> Session-> read('User.id'); \t \t $ this-> Field-> hasAndBelongsToMany ['User'] ['conditions'] = array('User.id'=> $ user_id); \t}' 這真的很奇怪,因爲我正在嘗試各種各樣的事情來讓它運行。在此之前,我想可能是我用初始聲明中的值覆蓋了整個數組 - 它似乎在__construct和beforeFilter之間有時會被cake修改。無論如何,很抱歉打擾你。謝謝你通過它說話。 – GTT 2010-06-30 19:55:23

相關問題