Как выбрать общее количество публикаций, которые пользователи сделали с laravel 5.7? - PullRequest
0 голосов
/ 06 июня 2019

Моя проблема в том, что мне нужно количество опубликованных рекламных акций, которые зарегистрированные пользователи сделали в графике с помощью Highcharts, используя библиотеку Laravel Charts, вопрос в том, чтобы я мог заставить вас напечатать имена пользователей.но я не смог заставить его напечатать общее количество своих публикаций

Мой код:

$users = User::select('nombre_empresa')->WhereIn('role_id',[2,3])->get();
    foreach ($users as $user) {

            $empresas[] = $user->nombre_empresa;
            $id[] = $user->id;
            $publicaciones[] = Promociones::where('user_id',$id)->get()->count();

    }

    $chart = new TotalPromociones;
    $chart->title('Total de promociones publicadas por socios');
    $chart->labels($empresas);
    $chart->dataset('Numero de promociones','bar', ([$publicaciones]));
    $chart->dataset('Total de promociones publicadas = '.$total_promociones,'bar',[]);

графика

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Laravel предоставляет метод для подсчета количества результатов от отношения.

Если вы хотите посчитать количество результатов в отношениях без фактически загружая их, вы можете использовать метод withCount, который Поместите столбец {отношение} _count на ваших результирующих моделей. Например:

$posts = App\Post::withCount('comments')->get();

foreach ($posts as $post) {
    echo $post->comments_count;
}

В вашем случае это будет что-то вроде:

$users = User::select('nombre_empresa')->withCount('promociones')->WhereIn('role_id',[2,3])->get();

foreach ($users as $user) {
    $empresas[] = $user->nombre_empresa;
    $id[] = $user->id;
    $publicaciones[] = $user->promociones_count;
}

Значение, переданное методу withCount(), должно совпадать с именем метода для отношения с Promociones, указанного в вашей модели User.

0 голосов
/ 06 июня 2019

Внесите некоторые изменения в код, как показано ниже:

    $users = User::WhereIn('role_id',[2,3])->pluck('nombre_empresa', 'id');

    $empresas = [];
    $publicaciones = [];

    foreach ($users as $key => $val) {

            $empresas[] = $val;
            $publicaciones[] = Promociones::where('user_id',$key)->count();

    }

    $chart = new TotalPromociones;
    $chart->title('Total de promociones publicadas por socios');
    $chart->labels($empresas);
    $chart->dataset('Numero de promociones','bar', ([$publicaciones]));
    $chart->dataset('Total de promociones publicadas = '.$total_promociones,'bar',[]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...