поиск по диапазону

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

поиск по диапазону

Сообщение Ghost_nsk »

всем хелло,
например, есть модель Goods, в ней переменная price.

Как можно замутить форму поиска с 2-мя инпутами, чтобы в итоге осуществлялся поиск вариантов по базе с условиями price > value1 && price < value2? :)
Аватара пользователя
sequester
Сообщения: 95
Зарегистрирован: 2012.01.09, 16:20
Откуда: Донецк, Украина

Re: поиск по диапазону

Сообщение sequester »

запрос написать или что именно не понятно ?
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: поиск по диапазону

Сообщение Ghost_nsk »

sequester писал(а):запрос написать или что именно не понятно ?
есть форма (view): в ней 2 инпута с именами price1 и price2.
Как привязать эти значения к модели, где есть только параметр с именем price и осуществить интервальный поиск?
Аватара пользователя
sequester
Сообщения: 95
Зарегистрирован: 2012.01.09, 16:20
Откуда: Донецк, Украина

Re: поиск по диапазону

Сообщение sequester »

Ghost_nsk писал(а):
sequester писал(а):запрос написать или что именно не понятно ?
есть форма (view): в ней 2 инпута с именами price1 и price2.
Как привязать эти значения к модели, где есть только параметр с именем price?

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

"... WHERE $good->price > $value1 && $good->price < $value2" 
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: поиск по диапазону

Сообщение Ghost_nsk »

ладно, по другому,
как закинуть $value1 и $value2 в метод search() модели Goods?
Аватара пользователя
sequester
Сообщения: 95
Зарегистрирован: 2012.01.09, 16:20
Откуда: Донецк, Украина

Re: поиск по диапазону

Сообщение sequester »

зачем его в search засовывать ? Ищите либо с пом DAO либо AR
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: поиск по диапазону

Сообщение Ghost_nsk »

sequester писал(а):зачем его в search засовывать ? Ищите либо с пом DAO либо AR
в search, ибо:

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

<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'id'           => 'rlive-grid',
    'dataProvider' => $model->search(),
...
?>
chelishchevi
Сообщения: 86
Зарегистрирован: 2011.11.03, 15:34
Откуда: Калининград

Re: поиск по диапазону

Сообщение chelishchevi »

Что вам мешает формировать провайдер в контроллере и после передавать уже в представление? В действие обрабатываете параметры и скидываете в модель в метод search(). Ничто не мешает добавить к нему возможность принимать аргументы.

http://www.yiiframework.com/doc/api/1.1 ... ion-detail

//не понимаю, зачем по каждому чиху создавать топики даже не пораскинув мозгами : ) и всё требовать от фреймворка.
Аватара пользователя
Ivan Ozercov
Сообщения: 53
Зарегистрирован: 2012.03.21, 15:53
Откуда: Минск

Re: поиск по диапазону

Сообщение Ivan Ozercov »

вот тут и тут вот обсуждалась тема как сделать фильтр по диапазону дат. Т.е от ХХХ до УУУ. Как я понял, это примерно, то что вам надо.
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: поиск по диапазону

Сообщение Ghost_nsk »

Ivan Ozercov писал(а):вот тут и тут вот обсуждалась тема как сделать фильтр по диапазону дат. Т.е от ХХХ до УУУ. Как я понял, это примерно, то что вам надо.
спасибо за наводки, оставалось только добавить переменные в 'safe' :)
Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: поиск по диапазону

Сообщение RSol »

Я делаю так:

модель преобразовываем:

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

public function search($crit=null)
    {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.

        $criteria=new CDbCriteria;

        ....
        if($crit)
        {
            $criteria->mergeWith($crit);
        }

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }
 
в контроллере создаю нужную мне критерию и передаю ее во вьюху

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

...
//разные проверки
$criteria=new CDbCriteria;
$criteria->addBetweenCondition('field',$valueStart,$valueEnd);
....
$this->render('view',array(
...
'criteria'=>$criteria,
));
 
во вьюхе делаю:

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

$this->widget('zii.widgets.grid.CGridView', array(
    'id'           => 'rlive-grid',
    'dataProvider' => $model->search($criteria),
...
 
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: поиск по диапазону

Сообщение Ghost_nsk »

RSol хорош :)
Ответить