Laravel Eloquent (PDO):检查事务是否处于活动状态

car*_*rse 4 php laravel eloquent laravel-5

我觉得这应该是一个简单的答案。但是,我无法在文档或其他任何地方找到直接答案。

在 Laravel PHP 框架中,我打开数据库事务时遇到类似于以下情况的情况:

(当然,我的示例与我正在使用的现实世界的东西相比被大大简化了,所以请不要使用“你为什么要这样做”类型的响应)。这是我感兴趣的原则。

try {

    if ($conditions == $criteria) {
       DB::connection('oracle')->beginTransaction();
    }
    // blah...
Run Code Online (Sandbox Code Playgroud)

稍后在代码中,我只想检查事务是否正在进行。我的条件语句的伪代码如下所示:

    if ( DB::connection('oracle')->transactionIsOngoing() ) {

        // do some stuff with the on-going transaction
        DB::connection('oracle')->commit();

        // if I were to execute "DB::connection('oracle')->transactionIsOngoing()"
        // again here it would return FALSE, because the commit command has
        // completed the open transaction

    }
Run Code Online (Sandbox Code Playgroud)

我应该用什么实际代码来替换DB::connection('oracle')->transactionIsOngoing()

Joe*_*Joe 6

Illuminate\Database\ConnectionInterface::transaction有一个transactionLevel属性可以返回活动事务的数量。

文档可以在这里找到:https://laravel.com/api/5.6/Illuminate/Database/ConnectionInterface.html#method_transactionLevel

  • 当然这只是一个接口。如果你想获得实际的事务级别,你应该使用 Illuminate\Support\Facades\DB::transactionLevel()` (2认同)