Как получить пользователей зареганых в этом месяце?

помогите пожалуйста с таким вопросом. Есть таблица с пользователями Users. У каждого из них поле created_at (в формате unix timestamp)

Мне нужно получить список пользователей. А конкретно (день - кол-во, след. день - кол-во). Чтобы в последствии выстроить график в котором будет 30 точек над каждой из которых будет цифра с кол-вом пользователей в этот день.

В итоге график будет отображать пользователей зарегистрированных за текущий месяц. Заранее спасибо. Пишу на Yii, виджет для графика использую antishov\Morris вот в таком формате планирую подставлять данные в график

'data' => [
                        ['date' => '2017-06-14', 'value' => 2],
                        ['date' => '2017-06-15', 'value' => 4],
                        ['date' => '2017-06-16', 'value' => 1]
                    ],

Ответы (1 шт):

Автор решения: Yura Zelinski

могу подсказать решение на своем примере. Я работаю с виджетом HighCharts.

В Контроллере я делаю запрос с базы данных для выбора всех операций для текущего пользователя за последний месяц:

 public function actionAnalytics() {

        $data = Operation::find()->select(['DATE(date) as d','COUNT(operation_id) as count'])
            ->from('operation')
            ->where(['user_id' => Yii::$app->user->getId()])
            ->andWHERE('MONTH(date) = MONTH(NOW())')
            ->groupBy('DATE(date)')
            ->asArray()
            ->all();

        return $this->render('analytics', [
            'data' => $data,
        ]);
    }

В представлении я заполняя в цикле данные для графика:

<? foreach ($data as $value) {
    $data1[] = [$value['d']];
    $data2[] = [(int)$value['count']];
}?> 

Потом передаю данные в график:

<?= Highcharts::widget([
                        'options' => [
                            'title' => ['text' => 'Операції за місяць'],
                            'chart' => ['type'=> 'column','height' => '700px'],
                            'xAxis' => [
                                'categories' => $data1,
                            ],
                            'yAxis' => [
                                'title' => ['text' => 'Кількість операцій'],
                                'tickInterval' => '1',
                            ],
                            'series' => [
                                [
                                    'type' => 'column',
                                    'name' => 'Кількість операцій',
                                    'data' => $data2,
                                ],
                            ]
                        ],
                    ]);?>

Результат:

введите сюда описание изображения

В Вашем случае запрос должен выглядеть скорее всего так:

$data = User::find()->select(['DATE_FORMAT(created_at, "%Y-%m-%d") as d','COUNT(user_id) as count'])
            ->from('user')
            ->andWHERE('MONTH('created_at') = MONTH(NOW())')
            ->groupBy('d')
            ->asArray()
            ->all(); 

Дайте знать, если у Вас всё получилось *)

→ Ссылка