[英]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.