我正在使用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 :(得分: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。