2013-06-05 6 views
1

Я строю объект доступа к данным в проекте, использующем структуру Yii. Один из запросов вставок относительно сложный, поскольку он распространяется по трем связанным таблицам.SQL-запросы в Yii

В это время у меня возникли SQL-запросы, и я не использую QueryBuilder.

В начале функции вставки, у меня есть

$connection = Yii::app()->db; 
$transaction = $connection->beginTransaction(); 

try { 
    $command = $connection->createCommand($this->insertQuestion); 

    //multiple $command->bindParam() calls 

Согласно documentation, экземпляр CDbCommand может быть повторно использован для создания нескольких запросов. Однако при повторном использовании для нового запроса необходимо вызывать CdbCommand::reset.

Это отображается только в части документации QueryBuilder. Как я использую CdbCommand::bindParam связать переменные в запросе без использования QueryBuilder, это необходимо для меня, чтобы сделать

$command->reset(); 
$command->setText($sqlText); 
$command->bindParam("sqlVar", $variable, PDO::PARAM_INT); 

Можно ли пропустить с помощью CDbCommand::reset в этой ситуации?

ответ

0

Согласно документации, вы можете сделать что-то вроде:

$transaction=$connection->beginTransaction(); 
try 
{ 
    $connection->createCommand($sql1)->execute(); 
    $connection->createCommand($sql2)->execute(); 
    //.... other SQL executions 
    $transaction->commit(); 
} 
catch(Exception $e) 
{ 
    $transaction->rollback(); 
} 

Если вы знаете SQL, который вы хотите использовать, просто использовать, что за $ SQL1, $ SQL2 и $ SQL3.