Есть такая проблема, мне нужно осуществить поиск юзеров по определенным параметрам.
Нужно искать по тем параметрам, которые попали в $params.
Это может быть user_id и trusted, это может быть просто user_id и тп.
Итак, со строками проблем нет. А вот со статусами, особенно где есть поля по умолчанию возникает проблема.
Мой контроллер:$UsersModel = new UsersModel;
$UsersModel->scenario = 'control_search';
$UsersModel->setAttributes($params);
$criteria = new CDbCriteria;
$criteria->limit = ProcessingData::load()->limit();
$criteria->order = '1date_register DESC';
$criteria->offset = ProcessingData::load()->offset($params['page'],$criteria->limit);
if($UsersModel->user_id)
$criteria->compare('user_id',$UsersModel->user_id);
if($UsersModel->trusted || (string)$UsersModel->trusted === '0')
$criteria->compare('trusted',$UsersModel->trusted);
if($UsersModel->active || (string)$UsersModel->active === '0')
$criteria->compare('active',$UsersModel->active);
$criteria->compare('login',$UsersModel->login, true);
$criteria->compare('name',$UsersModel->name, true);
$criteria->compare('mail',$UsersModel->mail, true);
Теперь в чем суть, к примеру я хочу показать всех пользователей у которых trusted = 1, тоесть должна выполниться только данная проверка
if($UsersModel->trusted || (string)$UsersModel->trusted === '0')
$criteria->compare('trusted',$UsersModel->trusted);
Но выполняется постоянно все числовые проверки, так как у меня в базе прописаны дефолтные значения.
если я не передам к примеру параметр active и распечатаю атрибуты
print_r($UsersModel->getAttributes());
то этот active будет = дефолтному значению из таблицы (тоесть 0). А это все дело портит мой поиск.
Подскажите пожалуйста как можно исправить ситуацию, например отключить дефолтовые значения в атрибутах ?