如何使用口才范围获取最后一条记录?

问题描述 投票:0回答:1

我有一个Posts表,其结构如下:

enter image description here

现在我正在尝试获取最新的帖子,该帖子显然是id = 2的记录。

我在主题页posts.htm中有此:

[builderList postLatest]
modelClass = "Me\Articles\Models\Posts"
scope = "scopeLatest"
scopeValue = "{{ :scope }}"
displayColumn = "title"
noRecordsMessage = "No records found"
detailsPage = "-"
detailsUrlParameter = "slug"
pageNumber = "{{ :page }}"

在我的模型Posts中,我有:

public function scopeLatest($query)
{
  return $query->orderBy('created_at','desc')->first();
}

但是这个正在返回两个记录。我也尝试使用latest()

return $query->latest();

这给了我错误:

Maximum function nesting level of '1000' reached, aborting!

甚至尝试传递latest('created_at')之类的参数,但遇到相同的错误。

尝试转储dd($query->orderBy('created_at','desc')->first()->toSql())并得到select * from posts where posts.deleted_at is null

  1. 为什么first()不限于1条记录?
  2. 为什么latest()丢给我Maximum error?这个版本是特定的错误吗?看来我找不到与此相关的文档。我有Laravel 5.5.48。

我现在不确定我可以使用什么。也许我在这里做错了。我只需要获取最新的帖子。

laravel-5 eloquent octobercms
1个回答
0
投票

您的问题的解决方案是使用->take(1)方法。我相信Builder希望范围返回查询{[a collection of models]}。花了一些时间后,我做了一些测试,这可能只是Builder插件中的一个缺陷。“

© www.soinside.com 2019 - 2024. All rights reserved.