Страница 1 из 1

критерия и построение запроса

Добавлено: 2014.05.19, 11:30
b10s
Здравствуйте,

я хочу построить запрос - фильтр, который на SQL будет выглядеть так:

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

select * from t1 where ( status=1 or status=2 or ... or status=n ) and  ( type=1 or type=2 or ... or type=n )
Как можно создать объект типа CDbCriteria соответствующий такому запросу?

Т.е. я хочу делать так

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

$filter = new CDbCriteria();
//как-нить открыть скобку
$filter->AddCondition='status=1';
$filter->AddCondition='status=2';
//как-нить закрыть скобку, добавить AND
//как-нить открыть скобку
$filter->AddCondition='type=1';
$filter->AddCondition='type=2';
//как-нить закрыть скобку  
вот такой алгоритм добавления мне нужен или что-то попроще, чтобы составить две критерии и объеденить их через AND - так даже будет логичнее.

Спасибо!

Re: критерия и построение запроса

Добавлено: 2014.05.19, 12:09
flashimage

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

$filter->AddCondition('status=1 or status=2 or ... or status=n');
$filter->AddCondition('type=1 or type=2 or ... or type=n');
Все остальное сделает activeRecord. Они по умолчанию объединяются через AND, если хотите OR надо писать $filter->AddCondition('blablabla', 'OR');

Re: критерия и построение запроса

Добавлено: 2014.05.19, 12:29
b10s
спасибо!
я справился вот так:

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

                
        $statusFilter = new CDbCriteria();
        $statusFilter->compare('status', $status);

        $typeFilter = new CDbCriteria();
        $typeFilter->compare('type', $type);

        $statusFilter->mergeWith($typeFilter);
        $statusFilter->order='id desc';
где $status и $type массивы значений этих фильтров, которые формируются динамически через array_push().