我有一个A
与 type 有关系的HAS_MANY
模型 model B
。
B
的属性是:
id,
user_id,
message,
date,
parent_message_id
B
我需要按日期(降序)对模型元素进行排序,但如果parent_message_id
与 null 不同,则要考虑的日期应该是对应的日期parent_message_id
。
是否可以自定义用于订购关系的标准?
好的,我通过以下方式解决了这个问题:模型 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 的消息的日期。缺点是我必须访问每个帖子的“子消息”......但是,找不到另一种解决方法。感谢你的帮助!
我认为只能根据同一列对元素进行排序。但是,可能有一个数据库忍者可以帮助您。
在一个完美的世界中,您可以使用afterFind()方法进行任何级别的任何自定义,不仅是排序,还可以更改其他一些值。它可能不如计划订单那么快,但这样你就可以从一点负载中释放 MySQL 服务器。另外它是自动调用的。干杯