Bal*_*res 1 php laravel laravel-5
我的项目中使用Capsule管理数据库连接,使用Model操作数据库,如下:
// Init Eloquent ORM Connection
$capsule = new Capsule;
$capsule->addConnection(Config::getDbConfig());
$capsule->addConnection(Config::getRadiusDbConfig(), 'radius');
$capsule->bootEloquent();
Run Code Online (Sandbox Code Playgroud)
我想在对数据库执行大修改时使用事务,但类模型中没有相关方法。
由于 Capsule,我无法使用 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
Run Code Online (Sandbox Code Playgroud)
我该如何处理?
小智 7
我在 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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样使用它:
Model::beginTransaction();
//do what you like.
Model::commit();
// OR
Model::rollBack();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |