Laravel按最新评论日期排序

时间:2014-02-03 18:38:39

标签: php sorting laravel laravel-4 eloquent

我有一个Posts表和多态关系Comments表。

我尝试了什么(不确定它是否是正确的方法)但是我收到一条消息,指出last_activity列不存在

class Post extends Eloquent {

...    

$appends = ['last_activity'];

public function getLastActivityAttribute()
        {
            if($this->has('comments', '>', 0))
            {
                $comment = $this->comments()->getQuery()->orderBy('created_at', 'desc')->first();
                return $comment->created_at;
            }
            else
            {
                return '1970-01-01 00:00:00';
            }
        }

...

}

基本上是这样的:

我想要通过评论

的created_at字段排序的帖子 与雄辩的对话。我看到了this,但看起来他对评论进行了排序而不是帖子。

帮助?

2 个答案:

答案 0 :(得分:0)

将您的行更改为

$这 - >属性[ 'last_activity'];

这应该在您调用模型时检索当前的最后一个活动

答案 1 :(得分:0)

事实证明,进行这种类型的计算非常节省资源并且表现不佳。

因此,我最终添加了一个名为last_activity的新数据库字段,然后在Laravel Events的帮助下,我附加了监听器来更新last_activity字段。

通过这样做,我避免了对数据库执行复杂查询的需要。