如何在Laravel Eloquent中获取总结果数

686 阅读1分钟

在处理数据库查询结果时,只获得结果集的总行数,而不是用常规查询拉出完整的数据集内容,往往是有用的。Eloquent提供了一些不同的聚合方法,这些方法返回一个标量数字,而不是Eloquent对象,包括count(),max(), 和sum() ,等等。这些都是通过每个Eloquent模型中内置的固有查询生成器来实现的。

在本系列的这一部分,你将更新主应用程序视图,以显示每个列表中的链接总数。

在你的代码编辑器中打开文件resources/views/index.php

resources/views/index.php

找到使用subtitle 类样式的段落,其中包含渲染应用程序菜单的foreach 循环。

...
<p class="subtitle">
     @foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }}</a> @endforeach
</p>
...

为了获得每个列表中的链接总数,你可以从定义在LinkList 类上的$list->links() 关系方法中访问查询生成器,并调用可通过查询生成器获得的count() 方法。

{{ $list->links()->count() }}

更新foreach 循环内的代码,包括count() 方法的调用,它将显示列表中的链接数。确保把它放在<a> 标签内,并紧跟在列表标题之后。你可以把这个信息包在一个小括号里,以便在渲染的HTML输出中更易读。

这就是你完成后的代码的样子。

 <p class="subtitle">
      @foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }} ({{ $list->links()->count() }})</a> @endforeach
 </p>

完成后保存该文件。然后,在你的浏览器上重新加载主应用程序页面。

http://localhost:8000

你会得到一个像下面这样的页面,显示每个列表中包含的链接总数,在顶部菜单上。

Updated application showing number of links in each link on the top menu

在本系列的下一部分,你将学习如何限制查询结果的数量,以及如何在Laravel Eloquent中给结果分页。

本教程是正在进行的关于Laravel Eloquent的每周系列的一部分。如果你想在新的教程发布时得到通知,你可以订阅Laravel标签