makinacorpus/goat-query-bundle

适用于makinacorpus/goat-query的Symfony包

3.1.7 2023-02-14 12:49 UTC

This package is not auto-updated.

Last update: 2024-09-19 19:32:54 UTC


README

此包为Symfony框架提供makinacorpus/goat-query的自动配置和集成。

安装

composer req makinacorpus/goat-query-bundle

然后,将以下包添加到您的Symfony config/bundles.php 文件中

return [
    // Your bundles...
    Goat\Query\Symfony\GoatQueryBundle::class => ['all' => true],
];

用法

如果一切配置成功,您可以在依赖注入上下文中(例如服务构造函数参数或控制器操作方法参数)使用以下类之一

  • Goat\Runner\Runner 为您提供连接到默认Doctrine DBAL连接的运行器实例,

  • Goat\Query\QueryBuilder 为您提供查询工厂实例。

配置

手动配置(独立)

手动配置连接非常简单

parameters:
    env(DATABASE_URL): 'pgsql://username:password@host:5432/database'
    env(DATABASE_URL_OTHER): 'pgsql://username:password@host:5432/other'
goat_query:
    runner:
        default:
            url: '%env(resolve:DATABASE_URL)%'
        other:
            url: '%env(resolve:DATABASE_URL_OTHER)%'

自动配置(与Doctrine并列)

默认情况下,如果您已安装并配置了Doctrine,此包将为每个Doctrine连接创建一个运行器,重用每个的Doctrine DBAL PDO连接,共享其会话。

考虑以下Doctrine配置

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'

您将在容器中获得一个名为 goat.runner.default 的单个 Goat\Runner\Runner 实例。

使用更高级的配置,例如

doctrine:
    dbal:
        connections:
            default:
                url: '%env(resolve:DATABASE_URL)%'
            logging:
                url: '%env(resolve:DATABASE_URL)%'

您将获得2个不同的运行器

  • goat.runner.default
  • goat.runner.logging

无需进一步配置。

高级配置

运行器

运行器是一个连接,您可能有一个或多个。默认情况下,您应该始终配置 default 连接。

重用Doctrine连接

goat_query:
    runner:
        default:
              doctrine_connection: default
              driver: doctrine
              metadata_cache: apcu
              metadata_cache_prefix: "%goat.runner.metadata_cache_prefix%"
    query:
        enabled: true

使用ext-pgsql驱动程序

goat_query:
    runner:
        default:
              driver: ext-pgsql
              url: '%env(resolve:DATABASE_URL)%'
        logging:
              driver: ext-pgsql
              url: '%env(resolve:DATABASE_URL)%'

您会注意到,对于 ext-pgsql,我们没有配置元数据缓存,因为 ext-pgsql 非常快,使用APCu存储元数据不会带来任何性能提升(这实际上会减慢运行器)。

使用 驱动程序

上一节适用于任何驱动程序,只需将所有 ext-pgsql 部分替换为以下任何一个

  • ext-pgsql:通过PHP ext-pgsql的PostgreSQL,
  • pdo-pgsql:通过 PDO 的PostgreSQL,
  • pgsql:通过驱动程序自动选择(首选 ext-pgsql),
  • pdo-mysql:通过 PDO 的MySQL,
  • mysql:通过驱动程序自动选择(目前仅支持 PDO)。

多个数据库连接

goat_query:
    runner:
        default:
              doctrine_connection: default
              driver: doctrine
              metadata_cache: apcu
              metadata_cache_prefix: "%goat.runner.metadata_cache_prefix%"
        some_business_connection:
              driver: ext-pgsql
              url: '%env(resolve:ANOTHER_DATABASE_URL)%'
        logging:
              autocommit: true
              doctrine_connection: another_connnection
              driver: doctrine
              metadata_cache: apcu
              metadata_cache_prefix: "%goat.runner.metadata_cache_prefix%"
    query:
        enabled: true

default 运行器是默认情况下将注入到服务的运行器,当使用自动装配时,使用 \Goat\Runner\Runner 接口作为类型提示。

为了注入特定运行器,您可以使用 goat.runner.NAME 服务标识符,在上面的示例中,您将有两个可用的服务

  • goat.runner.default,默认的,
  • goat.runner.logging,另一个。

驱动程序配置

阅读本包中的 `` 文件以获取更多信息。

@todo