CakePHP 2.X在HABTM连接表中的字段顺序

时间:2017-11-03 01:56:00

标签: cakephp cakephp-2.0 has-and-belongs-to-many

我有这3张桌子:

                      cols
groups           | id | ... | ...
groups_users     | group_id | user_id | created
users            | id | ... | ...

在我的群组模型中,我与用户模型有一个HABTM关系(使用别名成员)。

public $hasAndBelongsToMany = array(
    'Member' => array(
       'className'              => 'User',
       'joinTable'              => 'groups_users',
       'foreignKey'             => 'group_id',
       'associationForeignKey'  => 'user_id',
       'unique'                 => true,
   ),
);

如果我只是尝试获取组中的所有成员,甚至按用户表中的字段(例如他们的ID或用户名)进行排序,那么这很有效。但是,我有一种情况需要通过连接表对结果进行排序。我想显示最近加入群组的成员,'groups_users.created' => 'DESC'

我已经尝试将以下行添加到HABTM阵列但它没有工作

'with'   => 'GroupsUser',
'order'  => array('GroupsUser.id' => 'DESC')

我也像这样为GroupsUser创建了一个模型,但这也没有用

class GroupsUser extends AppModel {
    public $name = "GroupsUser";
    var $useTable = "groups_users";

    public $order = array(
        'GroupsUser.created' => 'DESC',
        'GroupsUser.id' => 'DESC'
    );

以下内容工作但我想远离调用GroupsUser模型,我想坚持使用HABTM成员关系。

$this->Group->GroupsUser->find('all',
    array(
        'limit' => 20,
        'order' => array('GroupsUser.created' => 'DESC'),
        'conditions' => array(
            'GroupsUser.group_id' => $group_id,
            'not' => array(
                'OR' => array(
                    array('User.username' => NULL),
                    array('User.username' => 0),
                    array('User.username' => '')
                )
            )
        ),
        'contain' => array(
           'User' => array(
                'fields' => array('User.username'),
            ),
        )
    )
);

0 个答案:

没有答案