foreach ($params as $param)
        {
            if ($param['label'] != 'name'){
                if ($param['type_value'] == '1') {
                    if ($param['value'] != '')
                        $query->where(['like', $param['label'], $param['value']]);
                }
                else {
                    if(($param['firstcompare'] == '<' || $param['firstcompare'] == '<=' || $param['firstcompare'] == '=') && $param['firstvalue'] != '') {
                        if($param['secondcompare'] != '' && $param['secondvalue'] != ''){
                            $query->where([
                                'or',
                                $param['label'].$param['firstcompare'].$param['firstvalue'],
                                $param['label'].$param['secondcompare'].$param['secondvalue']
                            ]);
                               // ->andWhere([$param['secondcompare'], $param['label'], $param['secondvalue']]);
                        }
                        else{
                            $query->where([$param['firstcompare'], $param['label'], $param['firstvalue']]);
                        }
                    }
                    elseif($param['firstcompare'] == '>' || $param['firstcompare'] == '>=' && $param['firstvalue'] != '')
                    {
                        if($param['secondcompare'] != '' && $param['secondvalue'] != ''){
                            $query->where([
                                'and',
                                $param['label'].$param['firstcompare'].$param['firstvalue'],
                                $param['label'].$param['secondcompare'].$param['secondvalue']
                            ]);
                        }
                        else{
                            $query->where([$param['firstcompare'], $param['label'], $param['firstvalue']]);
                        }
                    }
                    elseif($param['firstcompare'] == '' || $param['firstvalue'] == '') {
                        if ($param['secondcompare'] != '' || $param['secondvalue'] != '')
                            $query->where([$param['secondcompare'], $param['label'], $param['secondvalue']]);
                    };
                }
            }
        }
Это функция, которая парсит это дело:

(Клиент попросил чтобы если первое сравнение < а второе > то был поиск "and" если первое значение больше второго а у меня если < и > применяется поиск по "or" т.к. по моему предположению должно быть < 1 и > 2 чтобы исключить из результата то что находится между 1 и 2, а он вводит первым значением 2 а вторым 1... )