我有一个具有类型A
与模型HAS_MANY
关系的模型B
。
B
的属性有:
id,
user_id,
message,
date,
parent_message_id
我需要的模型B
的元素按日期(降序)进行排序,但万一parent_message_id
与null不同,日期要考虑应该是对应于parent_message_id
日期。
是否可以自定义用于订购关系的标准是什么?
好,我解决了这个方式如下:模型甲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服务器。再加上它被自动调用。干杯