Пытаюсь разобраться с тем, как построить график при помощи расширения yii2-highcharts-widget, чтобы по оси X шли месяцы, а по оси Y Вот код из офф. доки:
echo Highcharts::widget([
'options' => [
'title' => ['text' => 'Fruit Consumption'],
'xAxis' => [
'categories' => ['Apples', 'Bananas', 'Oranges']
],
'yAxis' => [
'title' => ['text' => 'Fruit eaten']
],
'series' => [
['name' => 'Jane', 'data' => [1, 0, 4]],
['name' => 'John', 'data' => [5, 7, 3]]
]
]
]);
пытаюсь его для себя адаптировать. Получаю данные из модели вот так:
return self::find()->select([
'address',
'idinvite',
'cdate_int',
'fromwhere'
])
->where(
new Expression(
"idregion = :id_region "
. "AND fromwhere != :not_interested ",
[":id_region" => REGION_ID,
":not_interested" => self::NOT_INTERESTED]))
->orderBy("cdate_int DESC")->indexBy('address');
Данный запрос возвращает множество массивов вот такого вида:
array(4) {
["address"]=>
string(30) "examplename"
["idinvite"]=>
string(3) "188"
["cdate_int"]=>
string(10) "1536864790"
["fromwhere"]=>
string(1) "2"
}
Хочу сделать, чтобы по x шли месяцы (отдельно формирую массив с ними), а по y количество записей в столбце fromwhere для каждого idinvite. В name я помещаю address из запроса, а в data хотел бы помещать сумму записей столбца fromwhere, чтобы видеть сколько в каждом месяце создалось записей для каждого id.
Подскажите. как правильно это реализовать? Массив для графика сейчас формирую вот так:
public function getStatData() {
$invitesData = $this->findInviteWithViews()->asArray()->all();
$resultData = [];
foreach ($invitesData as $key => $value) {
$positions = [];
foreach ($value as $val) {
$positions[] = count($value['fromwhere']);
}
$resultData[] = [
'name' => $key,
'data' => $positions
];
}
return $resultData;
}
Но это делает кучу вот таких массивов
array(2) {
["name"]=>
string(32) "examplename"
["data"]=>
array(4) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(1)
[3]=>
int(1)
}
}
и весь график получается в одну полоску. Как исправить данный код?
UPD: данные содержащиеся в $resultData:
Данные в $invitesData:
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости