定义的关系自定义排序标准()方法

问题描述 投票:7回答:2

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

B的属性有:

id,
user_id,
message,
date,
parent_message_id

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

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

database sorting yii relation
2个回答
10
投票

好,我解决了这个方式如下:模型甲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这些消息的日期。缺点是,我要访问每个岗位的“孩子的消息” ......但好,找不到另一种解决方法。感谢你的帮助!


0
投票

我认为这是唯一可能根据同一列的元素进行排序。然而,有可能是一个数据库忍者,可以帮助你。

在一个完美的世界里,你可以在任何级别使用afterFind()方法对于任何定制,不仅排序,而且还改变了一些值等。它不是一样快,计划订单,也许吧,但是这样一来,你从一个小负荷时释放的MySQL服务器。再加上它被自动调用。干杯

© www.soinside.com 2019 - 2024. All rights reserved.