我正在建立一个论坛。Laravel排序最后记录
在主页面中,我想显示每个论坛的最后一个回复。
层次结构是这样的:
论坛
的hasMany( '应用程序\主题')
hasManyThrough( '应用程序\主题', '应用程序\ Repley')
topics
belongsTo('App \ Forum')
的hasMany( '应用\回复')
回复
属于关联( '应用程序\主题')
我这样做:
$forum->replies()->orderBy('created_at', 'desc')->first()
和它的工作。但我想按主题和回复进行排序。 如果我在最后一个回复后发布新主题,我希望将该节目作为最后一个回复。
更新: 我这样做,它的工作。但有没有其他方法?
public function last() {
$topic = $this->topics->sortByDesc('created_at')->first();
$post = $this->replies->sortByDesc('created_at')->first();
return ($topic->created_at > $post->created_at) ? $topic : $post;
}
什么是论坛,主题和回复的关系? –
得到最后的重播,得到最后的话题,检查谁是新的 –
容易,雄辩的方式https://softonsofa.com/tweaking-eloquent-relations-how-to-get-latest-related-model/ –