【问题标题】:Build custom Laravel database adapter [closed]构建自定义 Laravel 数据库适配器 [关闭]
【发布时间】:2015-08-14 17:18:54
【问题描述】:

我正在 Linux 服务器上使用 Laravel 5.1 构建一个项目。 有两个数据库一个 MySQL(这里没问题)和 MSSQL(这里有问题)。 关键是,经过很长时间的研究,我终于使用 mssql 函数(如 mssql_query、mssql_fetch_object 等)获取数据。 我的问题与如何使用 Laravel 架构中的设计模式构建适配器并最终构建驱动程序有关。 有什么想法吗?

谢谢。

【问题讨论】:

    标签: php sql-server laravel-5.1


    【解决方案1】:

    Laravel 支持开箱即用的 MS-SQL。无需编写适配器。只需在您的 config/database.php 中配置“sqlsrv”连接,然后您就有一些使用它的选项:

    1 - 直接通过 DB Facade:

    $collection = DB::connection('sqlsrv')->select(...);
    $collection = DB::connection('mysql')->select(...);
    

    2 - 设置模型的连接属性:

    class Foo extends Model {
    
        protected $connection = 'sqlsrv';
    
        ...
    
    }
    

    3 - 在运行时更改模型的连接:

    $foo = new Foo;
    
    $foo->setConnection('mysql');
    
    $foo->bar = 'baz';
    
    $foo->save();
    

    更多信息请参考Laravel's Database Docs

    但是,如果由于某种原因仍需要编写适配器,正确的做法是编写Service Provider。看看MongoDB Connector 的实现作为一个很好的参考。另外,我强烈建议您阅读 Laravel 文档中的整个“架构基础”部分,它们真的很有帮助!

    【讨论】:

    • 嗨拉斐尔,感谢您的回答。默认的 laravel sqlsrv 使用基于仅在 Window Server 中可用的驱动程序的 PDO 功能。 php.net/manual/en/sqlsrv.requirements.php 这就是为什么我使用 mssql 函数代替,使用 php5-mssql 驱动程序。我一定会阅读架构基础,以更好地了解我想要实现的许多想法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多