运行 laravel 会照亮 laravel(拉拉维尔)之外的数据库事务


Running laravel illuminate database transactions outside of laravel

require dirname(dirname(__DIR__)) . '/vendor/autoload.php';
require dirname(__DIR__) . '/config.php';
use Illuminate'Database'Capsule'Manager as DB;
$dbc = new DB;
$dbc->addConnection(array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => DB_NAME,
    'username'  => DB_USER,
    'password'  => DB_PASSWORD,
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => ''
));
$dbc->setAsGlobal();
$dbc->bootEloquent();

$dbc->beginTransaction();

给了我这个错误,

PHP Fatal error:  Call to undefined method Illuminate''Database''Capsule''Manager::beginTransaction()

任何人都可以为我提供一些关于如何在 laravel 之外使用胶囊和数据库事务的帮助。我找不到任何表明这不起作用的东西?

您需要获取连接实例才能使用任何与数据库相关的方法(包括beginTransaction)。实现它们的类是 Illuminate'Database'Connection 。这意味着您需要从管理器获取连接实例并使用它:

use Illuminate'Database'Capsule'Manager as DB;
$capsule = new DB;
$capsule->addConnection(array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => DB_NAME,
    'username'  => DB_USER,
    'password'  => DB_PASSWORD,
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => ''
));
$capsule->setAsGlobal();
$capsule->bootEloquent();
$connection = $capsule->getConnection();
$connection->beginTransaction();