我有一个带有Property模型的新Laravel Nova安装。属性的属性为“国家/地区”,我想在“国家/地区”列上显示分区指标。
public function calculate(Request $request)
{
return $this->count($request, Property::class, 'country','country');
}
所有作品都可以使用,但是只能按国家/地区的字母顺序排序,而不是按计数的顺序排序,这样更有意义。
有什么方法可以对输出进行排序?
答案 0 :(得分:1)
您可以做的是:
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
是模型Property::orderBy(...)
的给定Builder实例,或者当您传递模型Property::class
时Nova会为您创建它$function
将是方法(计数,最小,最大...)$wrappedColumn
将是给定的列(您所在的国家/地区)$groupBy
将按列(国家/地区)作为给定的分组...嗯,您就知道了最后它将构建:
$results = Property::orderBy('aggregate', 'desc')->select(
'country', DB::raw("count(country) as aggregate")
)->groupBy('country')->get();