当我同时使用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。
答案 0 :(得分:4)
非常感谢RiggsFolly给出了这个答案,几乎给了我解决方案。
DB::connection()->setPdo($pdo);
$pdo = DB::connection()->getPdo();
答案 1 :(得分:3)
我不知道一种告诉Laravel使用你创建的pdo对象的方法,但有一种方法可以获取Laravels连接对象并将其用于其他数据库工作/事务
$pdo = DB::connection()->getPdo();
不完全是你所知道的,但它可能有用。