當我正在研究當前的項目時,我遇到了一個相當複雜的問題。我現在指出我的問題要詳細得多:CakePHP/Croogo:一個veeery複雜的協會
有三種型號:User,UsersExtendedField和UsersExtended。
UsersExtendedField包含可以手動管理的自定義字段。所有自定義字段也可以顯示在用戶視圖中,當然也可以填寫。然後將值存儲在UsersExtended中,該用戶有兩個foreignKeys:user_id和field_id。
關係如下:用戶有許多用戶擴展字段,用戶擴展字段有許多用戶擴展,用戶擴展屬於用戶,用戶擴展字段。
問題:訪問用戶視圖時,會顯示一個包含用戶信息輸入的表單。任何UsersExtendedFields都可以使用,並且由於這些用戶擴展了很多用戶,他們有很多UsersExtended值。但是我想將它們僅限於屬於目前顯示其視圖的用戶的值。這裏是我的(期望的)關係:
Croogo::hookBehavior('User', 'Crooboard.ExtendedUser', array(
'relationship' => array(
'hasMany' => array(
'UsersExtendedField' => array(
'className' => 'Crooboard.UsersExtendedField',
'foreignKey' => '',
'conditions' => array('status' => 1)
),
),
),
));
class UsersExtendedField extends AppModel {
var $name = 'UsersExtendedField';
var $displayField = 'fieldname';
var $hasMany = array(
'UsersExtended' => array(
'className' => 'Crooboard.UsersExtended',
'foreignKey' => 'field_id',
'conditions' => array(
'UsersExtended.user_id = User.id'
)
),
);
}
這不是完整的代碼,這些是重要的部分。問題從我寫'UsersExtended.user_id = User.id'的地方開始。顯然,這是行不通的。但我不知道如何在這裏訪問User.id。我也無法想象一個HABTM結構來解決這個任務。你有任何想法如何讓這個'UsersExtended.user_id = User.id'的語義工作?
非常感謝您花時間閱讀並幫助我!