1

Yii フレームワークを使用するプロジェクト内でデータ アクセス オブジェクトを構築しています。挿入クエリの 1 つは、関連する 3 つのテーブルに分散しているため、比較的複雑です。

現時点では、SQL クエリを書き出しており、QueryBuilder は使用していません。

挿入機能の最初に、私は持っています

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

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

  //multiple $command->bindParam() calls

ドキュメントによると、CDbCommandインスタンスを再利用して複数のクエリを作成できます。ただし、CdbCommand::reset新しいクエリを再利用する場合は呼び出す必要があります。

これは、ドキュメントの QueryBuilder 部分にのみ表示されます。CdbCommand::bindParamQueryBuilderを使用せずに変数をクエリにバインドするために使用しているので、それを行う必要がありますか?

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

CDbCommand::resetこの状況で使用をスキップすることはできますか?

4

1 に答える 1

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 に使用してください。

于 2013-06-08T03:23:43.867 に答える