laravel - 按计数对 Laravel Nova 分区结果进行排序
问题描述
我有一个带有属性模型的新 Laravel Nova 安装。属性具有“国家”属性,我想在“国家”列上显示分区度量。
public function calculate(Request $request)
{
return $this->count($request, Property::class, 'country','country');
}
所有的作品,但它只按国家的字母顺序排序,而不是按计数递减更有意义。
有没有办法对输出进行排序?
解决方案
你可以做的是:
public function calculate(Request $request)
{
return $this->count($request, Property::orderBy('aggregate', 'desc'), 'country','country');
}
更多信息:
Nova 将构建查询如下(nova/src/Metrics/Partition.php@aggregate):
$results = $query->select(
$groupBy, DB::raw("{$function}({$wrappedColumn}) as aggregate")
)->groupBy($groupBy)->get();
$query
是您模型的给定 Builder 实例,Property::orderBy(...)
否则 Nova 会在您传递模型时为您生成Property::class
$function
将是方法(计数,最小值,最大值......)$wrappedColumn
将是给定的列(在您的情况下为国家)$groupBy
将是按列(国家)给定的组......你明白了
最后它将构建:
$results = Property::orderBy('aggregate', 'desc')->select(
'country', DB::raw("count(country) as aggregate")
)->groupBy('country')->get();
推荐阅读
- c++ - 在 c++ 中显示总和,然后添加更多 sum cpp
- docker - 如何连接到 docker 容器内的 localhost?
- javascript - 隐藏后如何取消隐藏一行?
- gnuplot - 多图中坐标系的名称是什么?
- spring - 如何在 MockMVC 中模拟一些 bean 而不是其他的?
- performance - 从 S3 复制镶木地板文件时出现 Vertica 性能问题
- xml - XSLT 将 XML 转换为管道分隔的 Txt - 将行转置为列
- php - PHP防止图像刮擦
- vsto - COM 加载项 > 正确处理对象
- sql-server - 使用 SQL Server 数据库部署 Windows 应用程序