Instanciate Laravel DB对象具有相同的PDO对象句柄

时间:2015-10-21 07:16:36

标签: php postgresql laravel pdo laravel-4

当我同时使用PDO和Laravel数据库对象时,我遇到了问题。我在一个有几个PDO用法的旧PHP项目上工作。我尝试逐渐使用Laravel与DB对象。但是我的代码中有许多PDO事务 DB Laravel使用了我的PDO对象的不同postgres句柄

所以 Laravel DB忽略了我的PDO交易。我希望使用我的PDO对象的相同数据库句柄实现Laravel数据库对象

我的问题示例:

PDO -> BEGIN transaction
PDO -> add records
LaravelDB -> Remove these records
PDO -> COMMIT transaction
Both PDO and Laravel -> Records exist. So Laravel query has no effect.

你知道这样做的方法吗?

我使用Postgresql 9.1和Laravel 4.1。

2 个答案:

答案 0 :(得分:4)

非常感谢RiggsFolly给出了这个答案,几乎给了我解决方案。

在DB Laravel中定义PDO对象

DB::connection()->setPdo($pdo);

从DB Laravel获取PDO对象(来自RiggsFolly回答)

$pdo = DB::connection()->getPdo();

Documentation Link

答案 1 :(得分:3)

我不知道一种告诉Laravel使用你创建的pdo对象的方法,但有一种方法可以获取Laravels连接对象并将其用于其他数据库工作/事务

$pdo = DB::connection()->getPdo();

不完全是你所知道的,但它可能有用。