如何在我的 symfony 项目中将 SQL Server 与 ORM Doctrine 连接起来?

Posted

技术标签:

【中文标题】如何在我的 symfony 项目中将 SQL Server 与 ORM Doctrine 连接起来?【英文标题】:How can I connect SQL Server with ORM Doctrine on my symfony project? 【发布时间】:2021-07-09 09:06:27 【问题描述】:
doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        host: 127.0.0.1
        port: 8889
        user: '%env(DATABASE_USER)%'
        password: '%env(DATABASE_PWD)%'
        dbname: '%env(DATABASE_NAME)%'

        # With Symfony 3.3, remove the `resolve:` prefix
     #   url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: yml
                dir: '%kernel.project_dir%/config/doctrine'
                prefix: 'App\Entity'
                alias: App

【问题讨论】:

【参考方案1】:

您需要使用驱动程序pdo_sqlsrvsqlsrv,而不是pdo_mysql

(See doctrine configuration documentation).

pdo_sqlsrv:使用 pdo_sqlsrv PDO 的 Microsoft SQL Server 驱动程序

sqlsrv:使用 sqlsrv php 的 Microsoft SQL Server 驱动程序 扩展名。

pdo_sqlsrv/sqlsrv 的可用配置有:

user (string): Username to use when connecting to the database.
password (string): Password to use when connecting to the database.
host (string): Hostname of the database to connect to.
port (integer): Port of the database to connect to.
dbname (string): Name of the database/schema to connect to.

文档说:

以下驱动支持自动数据库平台检测 开箱即用,无需任何额外配置:

pdo_mysql
mysqli
pdo_pgsql
pdo_sqlsrv
sqlsrv

所以你不需要指定server_version

你会:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_sqlsrv'
        charset: utf8mb4
        host: 127.0.0.1
        port: 8889
        user: '%env(DATABASE_USER)%'
        password: '%env(DATABASE_PWD)%'
        dbname: '%env(DATABASE_NAME)%'

        # With Symfony 3.3, remove the `resolve:` prefix
     #   url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: yml
                dir: '%kernel.project_dir%/config/doctrine'
                prefix: 'App\Entity'
                alias: App

【讨论】:

以上是关于如何在我的 symfony 项目中将 SQL Server 与 ORM Doctrine 连接起来?的主要内容,如果未能解决你的问题,请参考以下文章

如何在symfony项目中将php版本从7.0降级到5.6?

如何在 symfony 2 和教义 2 中自定义 sql 日志?

如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志

如何在 symfony 中将教义升级到 2.6 [重复]

尝试在我的项目中实现没有 Symfony2 的 Twig 和 Assetic

如何在 Symfony2 中保存视图中的数据