我有这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'),
),
)
)
);