在relations()方法中定义自定义排序条件

Sop*_*oph 7 database sorting relation yii

我有一个与模型A有关系的HAS_MANY模型B.

B的属性是:

id,
user_id,
message,
date,
parent_message_id
Run Code Online (Sandbox Code Playgroud)

我需要B按日期(降序)排序模型元素,但如果与parent_message_idnull不同,则要考虑的日期应该是对应的日期parent_message_id.

是否可以自定义用于订购关系的标准?

Sop*_*oph 10

好的,我通过以下方式解决了这个问题:模型A HAS_MANY模型B,因此,我重新定义了以下关系方法:

public function relations()
{
    return array(
        'messages' => array(self::HAS_MANY, 'WallMessages', 'liga_id',
            'condition'=>'specific_post.parent_message_id IS NULL', 
            'order'=>'specific_post.date DESC', 
            'alias'=>'specific_post'),
    );
}
Run Code Online (Sandbox Code Playgroud)

因此,我只比较那些没有父ID的消息的日期.缺点是我必须访问每个帖子的"子消息"......但是,找不到另一种解决方法.感谢你的帮助!