首页 文章

按计数对Laravel Nova分区结果进行排序

提问于
浏览
2

我有一个带有Property模型的新Laravel Nova安装 . 属性具有“country”属性,我想在“country”col上显示分区度量 .

public function calculate(Request $request)
{
    return $this->count($request, Property::class, 'country','country');
}

所有的作品,但它只按国家的字母顺序排序,而不是降低计数,这将更有意义 .

有没有办法对输出进行排序?

1 回答

  • 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实例,或者当您传递模型时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();
    

相关问题