繁体   English   中英

如何在口才模型中使用交易

[英]How to use transaction in Eloquent Model

我使用Capsule来管理项目中的数据库连接,并使用Model来操作数据库,如下所示:

// Init Eloquent ORM Connection
$capsule = new Capsule;
$capsule->addConnection(Config::getDbConfig());
$capsule->addConnection(Config::getRadiusDbConfig(), 'radius');
$capsule->bootEloquent();

我想在对数据库执行大量修改时使用事务,但是类Model中没有相关方法。

由于存在胶囊,我无法使用Illuminate \\ Suooprt \\ Facades \\ DB,因为它报告了以下错误:

PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. in
E:\Projects\ss-panel\vendor\illuminate\support\Facades\Facade.php:210

我应该如何处理?

我在Laravel外使用Eloquent ORM。

这是我如何开始交易的解决方案。

您可以添加基础模型扩展\\ Illuminate \\ Database \\ Eloquent \\ Model。

<?php

use Illuminate\Database\Eloquent\Model as EloquentModel;

class Model extends EloquentModel
{
     public static function beginTransaction()
     {
          self::getConnectionResolver()->connection()->beginTransaction();
     }

     public static function commit()
     {
         self::getConnectionResolver()->connection()->commit();
     }

     public static function rollBack()
     {
         self::getConnectionResolver()->connection()->rollBack();
     }    
}

然后,您可以像这样使用它:

Model::beginTransaction();

//do what you like.

Model::commit();

// OR

Model::rollBack();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM