当我在做我当前的项目时,我遇到了一个相当复杂的问题。我现在会更详细地指出我的问题:
共有三个模型:User、UsersExtendedField 和 UsersExtended。
UsersExtendedField 包含可以手动管理的自定义字段。所有自定义字段也可以显示在用户视图中,当然也可以填写。然后将这些值存储在 UsersExtended 中,它有两个 foreignKey:user_id 和 field_id。
关系如下所示:用户有很多用户扩展字段,用户扩展字段有很多用户扩展,用户扩展属于用户,用户扩展字段。
问题:访问用户视图时,会显示一个带有用户信息输入的表单。任何 UsersExtendedFields 也是可用的,并且由于这些 hasMany UsersExtended,它们有很多 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”的语义起作用吗?
非常感谢您花时间阅读并帮助我!