laravel DB原始和函数是否有助于优化数据?

xfb7svmp  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(145)

在应用程序中,我们有一个功能,它将显示所有的年份作为选项卡。每个选项卡都有金额(金额是汇总),但同时它有数据。
情景
只是给予一个背景的应用程序,这是一个汽车销售商
假设您是客户,您早在2019年就开始使用此应用程序。您单击此模块以查看每年的汇总
假设每年有2500个数据。
在本年度中,我希望显示所有以前年度的总额
2023选项卡处于活动状态,从2019年到2022年,您每年销售300,000件
在获得前面的金额时,我使用DB原始求和函数来获得总和。
问:DB原始和函数是否减轻了求和的繁重查询?

fnx2tebb

fnx2tebb1#

您可以使用雄辩来完成此操作,而不必加载所有内部关系数据。

    • 程序员通常执行以下操作:**
    • 型号:**
public function children()
{
    return $this->hasMany(Children::class);
}

在控制器中:

$models = Model::with('children')->get();

然后,他们在刀片中正常加载数据并计数:

@foreach($models as $model)
   <p>{{ $model->children->count() }}</p>
@endforeach
    • 您可以执行以下操作:**

在控制器中:

$models = Model::withCount(['children'])->get();

在刀片式服务器中,您可以使用计数加载数据:

@foreach($models as $model)
   <p>{{ $model->children_count  }}</p>
@endforeach

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()完成同样的事情,也可以为更深层次的关系这样做。

相关问题