Задать вопрос
  • Yii2 как сделать redirect на referrer с анкором?

    @john_ricko Автор вопроса
    Перепробовал несколько способов, но пришлось сделать пока так -
    $this->registerJs('window.onload = function() {
        location.hash = \'#grid\';
    }');

    При загрузке страницы яваскрипт сам переводит на нужный анкор.
    Ответ написан
    Комментировать
  • Не могу сложить значения одного массива по ключам?

    @john_ricko Автор вопроса
    Спасибо всем.
    Решение такое:
    public function getMaxMonth($min,$max)
        {
            //$min = $this->find()->select(['plus','date_op'])->where(['user_id' => yii::$app->user->getId()])->andWhere(['between','date_op', $min, $max + 3600 *24])->asArray()->all();
            $min = $this->find()->select(['SUM(plus) as plus','DATE_FORMAT(FROM_UNIXTIME(`date_op`), \'%d.%m.%Y\') as date_op'])->where(['user_id' => yii::$app->user->getId()])->andWhere(['between','date_op', $min, $max + 3600 *24])->orderBy('date_op')->groupBy('date_op')->asArray()->all();
            $new = [];
            foreach($min as $k) {
    
                //Функция сложения дат и доходов
                $new[(int) $k['date_op']] = $k['plus'];
                //$new[(int) date('d',$k['date_op'])] += $k['plus'];
            }
          //  $diff = Enum::dateList(1,31);
            $newdiff = [];
    //        foreach($diff as $key => $value) {
    //            $newdiff[$key] += 0;
    //        }
            for($i = 1; $i<32; $i++) {
                $newdiff[$i] = 0;
            }
            $new = ArrayHelper::merge($new,$newdiff);
      
            return $new;
        }

    Функция выводит сумму колонок Plus за месяц по числам, если значения на число нет, то 0, а теперь не могу за год сделать выборку, с += было проще,

    public function getMaxYear()
        {
            $now = date('m',time());
            $startyear = strtotime(date("Y-1-1"));
            $year = [];
            for($i = 1; $i < $now + 1; $i++) {
                $diff = $this->getMaxMonth(strtotime(date("Y-$i-1")),strtotime(date("Y-$i-31")));
                foreach($diff as $k)
                {
                    $year[$i] += $k;
                }
    
            }
            return $year;
        }
    Ответ написан
    Комментировать