1

当我在做我当前的项目时,我遇到了一个相当复杂的问题。我现在会更详细地指出我的问题:

共有三个模型: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”的语义起作用吗?

非常感谢您花时间阅读并帮助我!

4

1 回答 1

0

听起来您需要正确设置您的 HABTM 关系。

您已经拥有包含外键的连接表 UsersExtended。删除所有以前的关系并在每个 User 和 UserExtendedField 模型中设置 HABTM。

您的用户模型中的关系代码如下所示:

var $hasAndBelongsToMany = array(
                              'UsersExtended' => array(
                                  'className' => 'UsersExtended',
                                  'joinTable' => 'UsersExtended',    //assuming this is the
                                                                     //name of that model's table
                                  'foreignKey' => 'user_id',
                                  'associationForeignKey' => 'field_id'                             
                              )
                          );

有关更多信息,请查看cakephp 书中的页面

另外,这篇博文帮助我在学习 cakephp 时掌握了关系概念。

于 2012-03-13T18:02:15.477 回答