Использование CDbCriteria в DAO

Не знал какое название дать посту, получилось, что получилось.
Очередной рабочий вечер, работа над интернет-магазином. Для уменьшения нагрузки отказываюсь в некоторых местах от использования AR. Естественно для выборки данных с использованием AR использую класс CDbCriteria. Но отказываясь от AR приходится отказаться и от CDbCriteria. Решил «поплакаться» на этот счет одному из знакомых разработчиков, который подсказал поковырять фреймворк и посмотреть действительно ли необходимо отказаться от CDbCriteria, когда не используешь AR. И как оказалось все не так плохо, иначе бы этот пост и не появился ;).
Ну а теперь к практическому решению:

criteria = new CDbCriteria;
// идет некий сумасшедший сбор критерии.
...
// Дальше необходимо создать экземпляр класса CDbCommandBuilder
$builder = new CDbCommandBuilder(Yii::app()->db->getSchema());
// Дальше если необходимо сделать выборку, то используем createFindCommand
// Если что-то удалить, то createDeleteCommand и т.п.
// Первым параметром передаем название таблицы или объект CDbTableSchema
$command = $builder->createFindCommand('product', $criteria);
// дальше можно использовать queryColumn(), queryAll() и т.п.
$productIds = $command->queryColumn();

Возможно это слишком низкоуровневое решение, но оно работает.