График количества пользователей за последние 6 месяцев - Laravel - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу создать диаграмму. Используя библиотеку ниже. https://charts.erik.cat/adding_datasets.html#database -eloquent-example-2

Запрос, который динамически сообщает количество пользователей за последние 6 месяцев

(with month rows
Sample:

January = 1,
February = 2,
March = 3
...)

Я хочу получить вывод:

$user_count_chart = [
"2" => 30,
"3" => 41,
"4" => 50,
"5" => 62,
"6" => 72,
"7" => 150,
];

**

  • ключ: значение месяца
  • значение: количество пользователей

* *

Schema::create('users', function (Blueprint $table) {
  $table->bigIncrements('id');
  $table->string('email')->unique();
  $table->string('password');
  $table->dateTime('email_verified_at')->nullable();
  $table->rememberToken();
  $table->timestamps();
});

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020
return User::groupBy('date')
        ->orderBy('date', 'desc')
        ->take(6)
        ->get([
            DB::raw('MONTH(created_at) as date'),
            DB::raw('count(id) as total')
        ])
        ->pluck('total', 'date');

Одна важная вещь, с которой вам, возможно, нужно быть осторожным, это пропустить месяцы. Допустим, если на марше нет пользователей, ваш график может работать не так, как вы ожидали. Пожалуйста, отметьте этот ответ, чтобы преодолеть эту "возможную" проблему.

0 голосов
/ 21 апреля 2020

Можно использовать groupBy() функцию Laravel Коллекция.

$user_count_chat = User::all()
    ->groupBy(function ($user) {
        return $user->created_at->month;
    })
    ->map(function ($group) {
        return $group->count();
    })

РЕДАКТИРОВАТЬ

Будьте осторожны, я думаю, номер месяца не достаточно хорош, потому что 2019-январь и 2020-январь имеют одинаковый номер месяца, но они не совпадают. Мой совет: используйте год-месяц

...