ThinkPHP 3.2.2 Comment implémenter les opérations de transaction

不言
Libérer: 2023-03-25 07:04:01
original
2595 Les gens l'ont consulté

Cet article présente principalement la méthode d'implémentation des opérations de transaction dans ThinkPHP 3.2.2, analyse brièvement les méthodes de démarrage, de soumission, de restauration et d'autres opérations de transactions dans thinkPHP et donne des exemples complets d'opérations de soumission et de restauration de transactions. Les amis peuvent se référer à <.>

Cet article décrit la méthode d'implémentation des opérations de transaction dans ThinkPHP 3.2.2. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Le manuel le dit très clairement :

5.3.19 Prise en charge des transactions

ThinkPHP fournit une prise en charge des transactions de base de données uniques Si vous souhaitez utiliser des transactions dans la logique de l'application, vous pouvez vous référer à la méthode suivante :

Démarrer une transaction : .

$User->startTrans()
Copier après la connexion

Valider la transaction :

$User->commit()
Copier après la connexion

Annulation de la transaction :

$User->rollback()
Copier après la connexion

Les transactions sont destinées à la base de données elle-même, elles peuvent donc être effectuées sur plusieurs modèles.

Par exemple :

// 在User模型中启动事务
$User->startTrans()
// 进行相关的业务逻辑操作
$Info = M("Info"); // 实例化Info对象
$Info->save($User); // 保存用户信息
if (操作成功){
  // 提交事务
  $User->commit()
}else{
  // 事务回滚
  $User->rollback()
}
Copier après la connexion

IndexController.class.php :

<?php
namespace SMS\Controller;
use Think\Controller;
class IndexController extends Controller {
  public function index(){
    $data[&#39;operator&#39;] = &#39;Testss&#39;;
    M()->startTrans();
    $result = M(&#39;feehistory&#39;)->add($data);
    $result1 = $result2 = true;
    if(!empty($result)){
      $regdelData[&#39;level&#39;] = &#39;111&#39;;
      $result1 = M(&#39;regdel&#39;)->add($regdelData);
      $regData[&#39;level&#39;] = &#39;101&#39;;
      $result2 = M(&#39;reg&#39;)->where("registryCode=&#39;13693536752-SJB-HUAX-12345678&#39;")->save($regData);
    }
    if(!empty($result) && !empty($result1) && !empty($result2) ){
      M()->commit();
      //$this->success(&#39;事物提交&#39;,);
      echo &#39;事物提交&#39;;
    }else{
      M()->rollback();
      //$this->error(&#39;事物回滚&#39;,);
      echo &#39;事物回滚&#39;;
    }
  }
}
Copier après la connexion
Recommandations associées :

Une brève discussion sur la mise en œuvre simple de l'instance thinkphp5



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!