DatabaseTransactionsManager.php
TLDR
This file is the implementation of the DatabaseTransactionsManager
class in the Illuminate\Foundation\Testing namespace. It extends the DatabaseTransactionsManager
class from the Illuminate\Database namespace.
Methods
addCallback
This method registers a callback to be executed after a transaction is committed.
callbackApplicableTransactions
This method returns a collection of transactions that are applicable to callbacks.
afterCommitCallbacksShouldBeExecuted
This method determines if after commit callbacks should be executed for the given transaction level.
Classes
DatabaseTransactionsManager
This is a class that extends the DatabaseTransactionsManager
class from the Illuminate\Database namespace. It provides additional functionality related to managing database transactions in testing.
<?php
namespace Illuminate\Foundation\Testing;
use Illuminate\Database\DatabaseTransactionsManager as BaseManager;
class DatabaseTransactionsManager extends BaseManager
{
/**
* Register a transaction callback.
*
* @param callable $callback
* @return void
*/
public function addCallback($callback)
{
// If there are no transactions, we'll run the callbacks right away. Also, we'll run it
// right away when we're in test mode and we only have the wrapping transaction. For
// every other case, we'll queue up the callback to run after the commit happens.
if ($this->callbackApplicableTransactions()->count() === 0) {
return $callback();
}
$this->pendingTransactions->last()->addCallback($callback);
}
/**
* Get the transactions that are applicable to callbacks.
*
* @return \Illuminate\Support\Collection<int, \Illuminate\Database\DatabaseTransactionRecord>
*/
public function callbackApplicableTransactions()
{
return $this->pendingTransactions->skip(1)->values();
}
/**
* Determine if after commit callbacks should be executed for the given transaction level.
*
* @param int $level
* @return bool
*/
public function afterCommitCallbacksShouldBeExecuted($level)
{
return $level === 1;
}
}