как построить график в yii с помощью yii2-highcharts-widget

162
25 декабря 2018, 17:30

Пытаюсь разобраться с тем, как построить график при помощи расширения 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:

READ ALSO
заход на сайт робота гугл

заход на сайт робота гугл

гугл исправно перебирал URL адреса на моем сайтено, почему то, с недавних пор, начал переходить по URL типа

151
Показ, в ExtJs, прогресса длительной операции

Показ, в ExtJs, прогресса длительной операции

Волею судьбы пришлось стать фронтендщиком и разобраться с ExtJsЕсть длительная процедура на php, которая вызывается из javascript

194
PHP регистрация при выключенных куки

PHP регистрация при выключенных куки

Уважаемые специалисты помогите с вопросомНа сайте есть форма регистрации, в качестве логина указывается E-mail, после заполнения полей формы...

173