7

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

B的属性是:

id,
user_id,
message,
date,
parent_message_id

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

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

4

2 回答 2

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'),
    );
}

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

于 2011-07-09T14:27:32.503 回答
0

我认为只能根据同一列对元素进行排序。但是,可能有一个数据库忍者可以帮助您。

在一个完美的世界中,您可以使用afterFind()方法进行任何级别的任何自定义,不仅是排序,还可以更改其他一些值。它可能不如计划订单那么快,但这样你就可以从一点负载中释放 MySQL 服务器。另外它是自动调用的。干杯

于 2011-07-04T07:53:57.797 回答