在应用程序中,我们有一个功能,它将显示所有的年份作为选项卡。每个选项卡都有金额(金额是汇总),但同时它有数据。
情景
只是给予一个背景的应用程序,这是一个汽车销售商
假设您是客户,您早在2019年就开始使用此应用程序。您单击此模块以查看每年的汇总
假设每年有2500个数据。
在本年度中,我希望显示所有以前年度的总额
2023选项卡处于活动状态,从2019年到2022年,您每年销售300,000件
在获得前面的金额时,我使用DB原始求和函数来获得总和。
问:DB原始和函数是否减轻了求和的繁重查询?
1条答案
按热度按时间fnx2tebb1#
您可以使用雄辩来完成此操作,而不必加载所有内部关系数据。
在控制器中:
然后,他们在刀片中正常加载数据并计数:
在控制器中:
在刀片式服务器中,您可以使用计数加载数据:
withCount方法将在生成的模型上放置{relation}_count属性
使用 * Barry DebugBar * 测试大数据量的速度,您会注意到,这样做会大大减少加载关系所需的时间,因为您没有加载所有的内部关系,而只是计算内部关系并显示它。
**For withCount Reference:**https://laravel.com/docs/9.x/eloquent-relationships#aggregating-related-models
**For withSum Reference:**https://laravel.com/docs/9.x/eloquent-relationships#other-aggregate-functions
您可以使用
withSum()
完成同样的事情,也可以为更深层次的关系这样做。