按计数对 Laravel Nova 分区结果进行排序
Sort Laravel Nova partition results by the count
我有一个新的 Laravel Nova 安装,带有 属性 模型。属性具有 'country' 属性,我想在 'country' 列上显示分区指标。
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
将是方法 (count, min, max...)
$wrappedColumn
将是给定的列(在您的情况下是国家/地区)
$groupBy
将按列(国家/地区)给出给定的组......你明白了
最后它将构建:
$results = Property::orderBy('aggregate', 'desc')->select(
'country', DB::raw("count(country) as aggregate")
)->groupBy('country')->get();
我有一个新的 Laravel Nova 安装,带有 属性 模型。属性具有 'country' 属性,我想在 'country' 列上显示分区指标。
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
将是方法 (count, min, max...)$wrappedColumn
将是给定的列(在您的情况下是国家/地区)$groupBy
将按列(国家/地区)给出给定的组......你明白了
最后它将构建:
$results = Property::orderBy('aggregate', 'desc')->select(
'country', DB::raw("count(country) as aggregate")
)->groupBy('country')->get();