Подготовка конструктора запросов


// Подготовка команды
$command = Yii::app()->db->createCommand();

// Подготовка и выполнение команды
$user = Yii::app()->db->createCommand()
    ->select('id, username, profile')
    ->from('tbl_user u')
    ->join('tbl_profile p', 'u.id=p.user_id')
    ->where('id=:id', array(':id'=>$id))
    ->queryRow();

Еще пример

$users = Yii::app()->db->createCommand()
    ->select('*')
    ->from('tbl_user')
    ->queryAll();

Получение самого запроса

$sql = Yii::app()->db->createCommand()
    ->select('*')
    ->from('tbl_user')
    ->text;

Альтернативный синтаксис:

$command->select(array('id', 'username'));
$command->select = array('id', 'username');

$row = Yii::app()->db->createCommand(array(
    'select' => array('id', 'username'),
    'from' => 'tbl_user',
    'where' => 'id=:id',
    'params' => array(':id'=>1),
))->queryRow();

Построение нескольких запросов

$command = Yii::app()->db->createCommand();
$users = $command->select('*')->from('tbl_users')->queryAll();
$command->reset();  // очищаем предыдущий запрос
$posts = $command->select('*')->from('tbl_posts')->queryAll();