自定义Laravel nova

时间:2020-07-13 11:52:30

标签: laravel laravel-nova

我有一个与users有关系的表operations

\App\user:

public function operation()
    {
        return $this->belongsTo('App\Operation');
    }

我可以这样做:

$operation = user->operation

现在,我想在“用户”资源页面中添加一个分区指标,告诉我按操作分组的用户数量

现在,它显示一个ID,并且不过滤我的用户(需要使用company_id过滤查询)

public function calculate(NovaRequest $request)
    {
        return $this->count($request, User::class, 'operation_id', 'name');
    }

我尝试添加name列名,但首先它不起作用,其次,我需要操作的名称,而不是用户的名称,因此它应该类似于operation.name,但它也不起作用。

如何打印操作名称而不是operation_id

PD:基本上,整个过程会更加痛苦,因为我无法在指标中看到dump()dd()的输出,因此我无法调试。

1 个答案:

答案 0 :(得分:1)

您应该使用Laravel / nova docs中提到的-> label()方法: https://nova.laravel.com/docs/3.0/metrics/defining-metrics.html#customizing-partition-labels

然后,正确的代码应为:

public function calculate(NovaRequest $request)
    {
        return $this->count($request, User::class, 'operation_id')
               ->label(function($operationId){
                 switch($operationId){
                       case 'opration_1_id': return 'operation_1_name';
                       break; 
                       case 'opration_2_id': return 'operation_2_name';
                       break; 
                       default: return 'Other';
                    }
               });
    }