Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про 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>
кто подскажет в чем проблема?
-
Artikk
- Сообщения: 742
- Зарегистрирован: 2017.02.10, 09:12
Сообщение
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>
-
someweb
- Сообщения: 552
- Зарегистрирован: 2017.03.09, 10:12
Сообщение
someweb »
Достаточно так
Код: Выделить всё
$query->andFilterWhere([$filterPrice > 30000 ? '>' : '<=', 'price', $filterPrice]);
А какой запрос в базу уходит?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
Artikk
- Сообщения: 742
- Зарегистрирован: 2017.02.10, 09:12
Сообщение
Artikk »
контроллер и вид весь написал выше
-
someweb
- Сообщения: 552
- Зарегистрирован: 2017.03.09, 10:12
Сообщение
someweb »
Запрос, который yii отправляет - в дебаг панели посмотрите.
А какой тип столбца в БД у price?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
Artikk
- Сообщения: 742
- Зарегистрирован: 2017.02.10, 09:12
Сообщение
Artikk »
ну вот же запрос.
Код: Выделить всё
$query = Rabota::find()
->andFilterWhere(['specialization' => $specialization])
->andFilterWhere(['experience' => $experience])
->andFilterWhere(['city' => $city]);
или что вы спрашиваете, я не пойму...
-
vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Сообщение
vitalik1183 »
в дебагере посмотрите что летит в бд конкретно(SELECT * FROM ...). то что вы показывайте это не запрос к бд.
Yii2!
-
Artikk
- Сообщения: 742
- Зарегистрирован: 2017.02.10, 09:12
Сообщение
Artikk »
а что там тогда? мы находим в бд по заданным параметрам же...
-
caHek2x
- Сообщения: 1242
- Зарегистрирован: 2016.04.12, 20:41
Сообщение
caHek2x »
а случайно у вас в базе price не text/varchar ?)
-
Artikk
- Сообщения: 742
- Зарегистрирован: 2017.02.10, 09:12
Сообщение
Artikk »
решение:
Код: Выделить всё
if ($filterPrice == 5000) { //до 5000
$query->andWhere(['<=', 'price', 5000]);
}
убрать кавычки и все работает.