我有一个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,但看起来他对评论进行了排序而不是帖子。帮助?
答案 0 :(得分:0)
将您的行更改为
$这 - >属性[ 'last_activity'];
这应该在您调用模型时检索当前的最后一个活动
答案 1 :(得分:0)
事实证明,进行这种类型的计算非常节省资源并且表现不佳。
因此,我最终添加了一个名为last_activity
的新数据库字段,然后在Laravel Events的帮助下,我附加了监听器来更新last_activity
字段。
通过这样做,我避免了对数据库执行复杂查询的需要。