Codeigniter 如果有新回复,则在列表顶部显示主题

Codeigniter 如果有新回复,则在列表顶部显示主题,codeigniter,Codeigniter,我有一个我的主题列表,默认情况下,它将获取回复id为0的主题,然后在创建日期之前排列它们 如果其中一个主题有回复,则该主题应位于列表顶部 问题:如何确保某个主题有新的回复,然后该主题将进入列表 目前,您可以看到,我的var dump有两个项,第二个数组项应该位于顶部,因为它有一个新的最后发布时间 Array ( [0] => Array ( [title] => How to [author] => dem

我有一个我的主题列表,默认情况下,它将获取回复id为0的主题,然后在创建日期之前排列它们

如果其中一个主题有回复,则该主题应位于列表顶部

问题:如何确保某个主题有新的回复,然后该主题将进入列表

目前,您可以看到,我的var dump有两个项,第二个数组项应该位于顶部,因为它有一个新的最后发布时间

Array
(
    [0] => Array
        (
            [title] => How to
            [author] => demo
            [author_post_time] => Tue Jun 13 , 2017 19:43:01 pm
            [last_post_by] => demo
            [latest_post_time] => Tue Jun 13 , 2017 19:43:01 pm
        )

    [1] => Array
        (
            [title] => How to install codeigniter
            [author] => admin
            [author_post_time] => Sat Jun 10 , 2017 23:26:48 pm
            [last_post_by] => demo
            [latest_post_time] => Tue Jun 13 , 2017 20:48:00 pm
        )

)
数据库映像

模型


尝试先在date2之前对表进行排序,如果不存在,则在date1之前不进行答复。您似乎已经实现了它,您只是按帖子上创建的日期订购。

请尝试使用下面提到的行,我希望这将解决您的问题

$this->db->order_by('t.date_created', 'desc');


$date1和$date2只是为了显示,正如您在下图中看到的一样对不起,当我说date1和date2时,我的意思是更改此行“$this->db->order_by't.date_created”,“desc”;”如果任何主题的reply_id不为0,则改为按最近的回复排序,您是否有一个或两个主题和回复表?@Tpojka只有一个。因为这是两个表作业。类似于博客文章和评论,它们之间有一对多的关系。@Tpojka我尝试了两个表,但运气不好,所以又回到了一个表。学习DB表设计中的范式。特别注意一个。这应该是合乎逻辑的。如果您不尊重需要如何完成工作的一些关键点,那么您将越来越深入地探讨问题,代码将变得难以维护或不可能维护。您需要具有topic的所有属性的topics表。不包括任何与回复相关的内容。这样,您就需要一个包含所有属性reply needs和topic_id作为外键的reples表。你应该从那一点开始,我投我一票。我试着回到双表方式,试着用$this->db->order_by'r.date_created DESC,t.date_created DESC';这种方法现在似乎有效了,谢谢你tip@wolfgang1983,很高兴帮助你。
$this->db->order_by('t.date_created', 'desc');
$this->db->order_by('t.reply_id DESC, t.date_created DESC');