【问题标题】:Instanciate Laravel DB object with same handle of PDO object使用 PDO 对象的相同句柄实例化 Laravel DB 对象
【发布时间】:2016-01-20 02:03:06
【问题描述】:

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

所以 Laravel DB 忽略了我的 PDO 事务。我想使用与我的 PDO 对象相同的数据库句柄来实例化 Laravel DB 对象

我的问题示例:

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。

【问题讨论】:

    标签: php postgresql laravel pdo laravel-4


    【解决方案1】:

    非常感谢 RiggsFolly 的回答,它几乎给了我解决方案。

    在 DB Laravel 中定义 PDO 对象

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

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

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

    Documentation Link

    【讨论】:

    • 您也应该接受这个作为正确答案,它会向其他人指出这是对您的特定问题的正确解决方案,并且您也会因此获得积分。
    • 是的,我会在 22 小时内完成(所以现在阻止我接受我自己的答案)。再次感谢您!
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢您的回答。但是,在我的整个应用程序中,我使用了一个扩展名为 DbPDO 的 PDO 对象。我可以从 PDO 实例创建 DbPDO 实例吗?
    • 感谢您的回答,我找到了解决方案。谢谢。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    相关资源
    最近更新 更多