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