Как получить пользователей зареганых в этом месяце?
помогите пожалуйста с таким вопросом. Есть таблица с пользователями 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 шт):
могу подсказать решение на своем примере. Я работаю с виджетом 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();
Дайте знать, если у Вас всё получилось *)
