Не работает поиск по ценам

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Не работает поиск по ценам

Сообщение Artikk »

Код: Выделить всё

$query = Rabota::find()
			->andFilterWhere(['specialization' => $specialization])
			->andFilterWhere(['experience' => $experience])
			->andFilterWhere(['city' => $city]);

		if ($filterPrice == 5000) { //до 5000
			$query->andWhere(['<=', 'price', '5000']);
		}
		if ($filterPrice == 10000) { //до 10000
			$query->andWhere(['<=', 'price', '10000']);
		}
		if ($filterPrice == 15000) { //до 15000
			$query->andWhere(['<=', 'price', '15000']);
		}
		if ($filterPrice == 20000) { //до 20000
			$query->andWhere(['<=', 'price', '20000']);
		}
		if ($filterPrice == 25000) { //до 25000
			$query->andWhere(['<=', 'price', '25000']);
		}
		if ($filterPrice == 30000) { //до 30000
			$query->andWhere(['<=', 'price', '30000']);
		}
		if ($filterPrice == 30001) { //от 30001
			$query->andWhere(['>', 'price', '30000']);
		}

Код: Выделить всё

<select class="inp" name="price">
                        <option value="">Зарплата</option>
                        <option value="5000">до 5000</option>
                        <option value="10000">до 10000</option>
                        <option value="15000">до 15000</option>
                        <option value="20000">до 20000</option>
                        <option value="25000">до 25000</option>
                        <option value="30000">до 30000</option>
                        <option value="30001">от 30000</option>
                    </select>
кто подскажет в чем проблема?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Не работает поиск по ценам

Сообщение vitalik1183 »

Код: Выделить всё

$query->andFilterWhere(['<=', 'price', $filterPrice]);
Yii2!
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

не работает так.
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

Код: Выделить всё

public function actionIndex(){

		$specialization = Yii::$app->request->get('specialization');
		$experience = Yii::$app->request->get('experience');
		$city = Yii::$app->request->get('city');
		$filterPrice = Yii::$app->request->get('price');



		$query = Rabota::find()
			->andFilterWhere(['specialization' => $specialization])
			->andFilterWhere(['experience' => $experience])
			->andFilterWhere(['city' => $city]);

		if ($filterPrice == 5000) { //до 5000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 10000) { //до 10000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 15000) { //до 15000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 20000) { //до 20000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 25000) { //до 25000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 30000) { //до 30000
			$query->andFilterWhere(['<=', 'price', $filterPrice]);
		}
		if ($filterPrice == 30001) { //от 30001
			
			$query->andFilterWhere(['>', 'price', $filterPrice]);
		}

		$pages = new Pagination(['totalCount' => $query->count(), 'pageSize' => 20, 'forcePageParam' => false, 'pageSizeParam' => false]);
		$latest = $query->offset($pages->offset)->orderBy(['id'=>SORT_DESC])->limit($pages->limit)->all();

		return $this->render('index', compact('latest', 'pages'));
	}

Код: Выделить всё

<form method="get" id="formvac" action="<?php echo \yii\helpers\Url::to(['search/index'])?>">
                <div class="col-md-3 col-sm-3 col-xs-12">
                    <select class="inp" name="specialization">
                        <option value="">Профессия</option>
                        <?php foreach($experiences as $experience):?>
                            <option value="<?php echo $experience->name?>"><?php echo $experience->name?></option>
                        <?endforeach;?>
                    </select>
                </div>
                <div class="col-md-3 col-sm-3 col-xs-12">
                    <select class="inp" name="city">
                        <option value="">Город</option>
                        <?php foreach($citys as $city):?>
                            <option value="<?php echo $city->name?>"><?php echo $city->name?></option>
                        <?endforeach;?>
                    </select>
                </div>
                <div class="col-md-3 col-sm-3 col-xs-12">
                    <select class="inp" name="price">
                        <option value="">Зарплата</option>
                        <option value="5000">до 5000</option>
                        <option value="10000">до 10000</option>
                        <option value="15000">до 15000</option>
                        <option value="20000">до 20000</option>
                        <option value="25000">до 25000</option>
                        <option value="30000">до 30000</option>
                        <option value="30001">от 30000</option>
                    </select>
                </div>
                <div class="col-md-3 col-sm-3 col-xs-12">
                    <button class="searching" form="formvac">Найти вакансию</button>
                </div>
            </form>
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

есть предложения?
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Не работает поиск по ценам

Сообщение someweb »

Достаточно так

Код: Выделить всё

    $query->andFilterWhere([$filterPrice > 30000 ? '>' : '<=', 'price', $filterPrice]);
А какой запрос в базу уходит?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

так тоже не работает. вот таблица: http://c2n.me/3NrJgU6
http://c2n.me/3NrJgU6 выбрал до 5000р, но там почемуто и 16 000 есть.
всмысле какой запрос?
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

контроллер и вид весь написал выше
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Не работает поиск по ценам

Сообщение urichalex »

Запрос в базу какой формируется?
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Не работает поиск по ценам

Сообщение someweb »

Запрос, который yii отправляет - в дебаг панели посмотрите.
А какой тип столбца в БД у price?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

ну вот же запрос.

Код: Выделить всё

$query = Rabota::find()
			->andFilterWhere(['specialization' => $specialization])
			->andFilterWhere(['experience' => $experience])
			->andFilterWhere(['city' => $city]);
или что вы спрашиваете, я не пойму...
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Не работает поиск по ценам

Сообщение vitalik1183 »

в дебагере посмотрите что летит в бд конкретно(SELECT * FROM ...). то что вы показывайте это не запрос к бд.
Yii2!
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

а что там тогда? мы находим в бд по заданным параметрам же...
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

viewtopic.php?f=19&t=43461 вот я создавал тему, там мне так советовали, но сейчас почемуто это не работает.
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Не работает поиск по ценам

Сообщение caHek2x »

а случайно у вас в базе price не text/varchar ?)
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Не работает поиск по ценам

Сообщение vitalik1183 »

даже если и варчар, как это влияет? там без варчара проблемы с нормализацией :)
https://www.db-fiddle.com/f/5n6nc7BKQwCxTx8LWJVP7L/0
Yii2!
Artikk
Сообщения: 742
Зарегистрирован: 2017.02.10, 09:12

Re: Не работает поиск по ценам

Сообщение Artikk »

решение:

Код: Выделить всё

if ($filterPrice == 5000) { //до 5000
	$query->andWhere(['<=', 'price', 5000]);
}
убрать кавычки и все работает.
Ответить