Настройка значения метрик раздела в Laravel nova - PullRequest
0 голосов
/ 13 июля 2020

У меня есть таблица users, которая имеет отношение к operations.

\App\user:

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

Итак, я могу сделать:

$operation = user->operation

Теперь я хочу добавить метрику раздела c на странице ресурсов «Пользователи», которая сообщает мне количество пользователей, сгруппированных по операции

Прямо сейчас отображается идентификатор, и он не фильтрует моих пользователей (необходимо фильтровать запрос с помощью company_id)

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

Я попытался добавить имя столбца name, но во-первых, оно не работает, а во-вторых, мне нужно имя операции, а не имя пользователя, поэтому должно быть что-то вроде operation.name, но это не работает.

Как я могу напечатать имя операции вместо operation_id

PD: В принципе, весь процесс более болезненный, потому что я не вижу вывода dump() или dd() в метриках c, поэтому я не могу отлаживать.

1 Ответ

1 голос
/ 16 августа 2020

Вы должны использовать метод -> label (), как указано в документации Laravel / nova: 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';
                    }
               });
    }
...