webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg

Почему возникает эта ошибка?

Есть экшен
public function actionIndexsearch()
    {
        //заполняем данные из запроса
        $params = Yii::$app->getRequest()->get();
        //получаем id гитар соответствующих фильтру
        $guitars = Bdguitar::filterguitars($params);
        $guitarsid = ArrayHelper::map($guitars,'id','id');
        //поиск по объявлениям
         $boardsearch = Board::find();
        if(isset($params['bu']))
        {
            $boardsearch->andWhere(['bu'=>$params['bu']]);
        }
        if(isset($params['sity']))
        {
            $boardsearch->andWhere(['sity'=>$params['sity']]);
        }
        if(isset($params['cenamin']) AND isset($params['cenamax']))
        {
            $max = $params['cenamax'];
            $min = $params['cenamin'];
                   $boardsearch->andWhere(['<','price',$max]);
            $boardsearch->andWhere(['>','price',$min]);
        }
        $boardsearch->andWhere(['idinbd'=>array_values($guitarsid)]);
        
        //вывод
        $pages = new Pagination(['totalCount' => $boardsearch->count(), 'pageSize'=>24]);
        $models = $boardsearch->offset($pages->offset)
            ->limit($pages->limit)
            ->all();
        if(Yii::$app->getRequest()->isAjax)
        {
            $ajax = $boardsearch->count();
            return $ajax;
        }else{
            return $this->render('index', [
                'model' => $models,
                'pages' => $pages
            ]);
        }
    }

Проблема тут (если убираю проблема уходит, но почему):
if(isset($params['cenamin']) AND isset($params['cenamax']))
        {
            $max = $params['cenamax'];
            $min = $params['cenamin'];
                   $boardsearch->andWhere(['<','price',$max]);
            $boardsearch->andWhere(['>','price',$min]);
        }

Изначально делал через between, та же ошибка:
exception 'yii\base\ErrorException' with message 'Undefined offset: 1' in /var/www/user15354/data/www/prodamgitaru.ru/vendor/yiisoft/yii2/db/Command.php:271
Stack trace:
#0 /var/www/user15354/data/www/prodamgitaru.ru/vendor/yiisoft/yii2/db/Command.php(271): yii\base\ErrorHandler->handleError(8, 'Undefined offse...', '/var/www/user15...', 271, Array)
#1 /var/www/user15354/data/www/prodamgitaru.ru/vendor/yiisoft/yii2/db/Command.php(215): yii\db\Command->bindPendingParams()
#2 /var/www/user15354/data/www/prodamgitaru.ru/vendor/yiisoft/yii2/db/Command.php(815): yii\db\Command->prepare(true)
и т.д.
Самое интересное, что $boardsearch->andWhere(['<','price',5000]); работает, а добавляю больше чего-то - ошибка.

Можете посмотреть ошибку тут: prodamgitaru.ru/indexsearch?cenamax%5B%5D=833&cena...

Не могу понять ее суть. Очень нужна помощь. Второй день рою google
  • Вопрос задан
  • 3221 просмотр
Пригласить эксперта
Ответы на вопрос 2
LIAL
@LIAL
А где первый where ?
Попробуйте первое условие (вообще первое) при сборке запроса доавблять НЕ через andWhere а через Where, а уж последующие через andWhere
Ответ написан
Комментировать
olegtytarenko2
@olegtytarenko2
разработываю саты на cms PHP. Сейчас практикую yii
А. Либо передаётся не правильное значение
Б. Попробуй сделать так (int)$max, так же и с $min (если стоит двоичные значения то (float) )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы