Laravel Nova Metrics Partition принадлежит к многим отношениям - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть следующая модель данных:

(публикация) <- [ownToMany] -> (подписчик)

Я хочу создать метрику раздела Nova, чтобы отображать количество подписчиков длякаждая публикация.

Метод вычисления моего класса Partition выглядит следующим образом:

public function calculate(Request $request) { return $this->count($request, Subscriber::with('publications'), 'publication.id'); }

Но я получаю ошибку "неизвестный столбец".Кто-нибудь знает, как заставить это работать?

Ответы [ 2 ]

0 голосов
/ 03 августа 2019

Вы можете сделать что-то вроде этого:

public function calculate(Request $request)
{
    $subscribers = Subscriber::withCount('publications')->get();

    return $this->result(
        $subscribers->flatMap(function ($subscriber) {
            return [
                $subscriber->name => $subscriber->publications_count
            ];
        })->toArray()
    );
}
0 голосов
/ 02 мая 2019

Помощник счетчика позволяет группировать только по столбцу таблицы модели.Это также не позволяет объединять таблицы.

Если вам нужен более сложный запрос с объединением и группированием по столбцу в другой таблице, вы можете создать свой собственный массив результатов и вернуть его с результатами.helper.

Вы можете увидеть результаты документов помощника здесь: https://nova.laravel.com/docs/1.0/metrics/defining-metrics.html#customizing-partition-colors

Вы должны создать свой массив (вы можете использовать eloquent или построитель запросов здесь) внутри функции вычисления, а затем вернуть этот массивс помощником результатов.

Надеюсь, это поможет!

...