ホームページ >バックエンド開発 >PHPチュートリアル >YII 物無効の問題 HELP HELP HELP HELP HELP HELP

YII 物無効の問題 HELP HELP HELP HELP HELP HELP

WBOY
WBOYオリジナル
2016-06-23 13:54:31872ブラウズ

親愛なるマスターの皆様、初心者レベルの PHP プログラマーの皆様、助けてください

いいこと

公式文書:

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


あなた自身のカプセル化された文書:
説明: $this->getDb() は、親によって取得された $connection オブジェクトですYii を介してクラスを作成します
インスタンス化中に $connection オブジェクトを DB 層に渡すだけで、その後 DB 層は追加、削除、変更、クエリなどの操作を実行します
ただし、DB 層で exclude() メソッドを実行するとき、データベースに直接挿入され、動作しません。解決してください。 ! !
サービス層
 public function addCourseRecommend($courseRecommend,$payWayArray)    {        try{            $connection=$this->getDb();            $transaction=$connection->beginTransaction();            $this->courseRecommendDb= new CourseRecommendDb($connection);            $this->payWayDb=new PayWayDb($connection);            $this->courseRecommendDb->addCourseRecommend($courseRecommend);            foreach($payWayArray as $tempPayWay)            {                $this->payWayDb->addPayWay($tempPayWay);                $tempPayWayRecommend =new PayWayRecommend();                $this->payWayDb->addPayWayRecommend($tempPayWayRecommend);            }            $this->commit($transaction);        }catch (Exception $e){            $this->rollback($transaction);            $this->closeLink();            throw $e;        }        $this->closeLink();    }


ディスカッション (解決策) に返信

返信待ち

人はどこですか、人はどこですか。 。 。 。 。

しかし、コードが何をしているのか理解できません
ただし、トランザクションは同じ接続内でのみ有効であることに注意してください
Yii のデータベースは PDO に基づいており、新しい PDO が作成されるたびに新しい接続が生成されます (これは異なります)離散関数とはデータベース拡張子が異なります)

しかし、コードが何をしているのか理解できません
ただし、トランザクションは同じ接続内でのみ有効であることに注意してください
Yii のデータベースは PDO に基づいており、新しい PDO Connection のたびに生成されます (離散関数のデータベース拡張とは異なります)



モデレータさん、ありがとうございます、解決しました。
私がやっているのは、サービス内で複数のビジネス DB を呼び出して実装することです。この考え方は正しいはずであり、特定のエラーは解決されています。

トラブルシューティングの結果、データベース エンジンの問題であることがわかりました。操作したいテーブルの種類がどのようにして MyISAM に変更されたのかわかりません。


MyISAM と InnoDB の説明 InnoDB と MyISAM は、MySQL を使用するときに多くの人が最もよく使用する 2 つのテーブル タイプであり、どちらのテーブル タイプにも、特定のアプリケーションに応じて、それぞれ長所と短所があります。基本的な違いは、MyISAM タイプはトランザクション処理などの高度な処理をサポートしないのに対し、InnoDB タイプはサポートするということです。 MyISAM タイプのテーブルはパフォーマンスを重視しており、その実行時間は InnoDB タイプよりも高速です。

午前中ずっと悩んだ結果、最初はデータベース エンジンの問題かもしれないと考えましたが、可能性は比較的小さいため、今後も注意する必要があります。 ! ! !
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。