makinacorpus/goat-query-bundle
适用于makinacorpus/goat-query的Symfony包
Requires
- php: >=7.4
- makinacorpus/goat-query: ^3.0.14
- makinacorpus/profiling: ^1.1.1 || ^2.0.1
- psr/log: ^1.0 || ^2 || ^3
Requires (Dev)
- doctrine/dbal: ^2.10
- doctrine/sql-formatter: ^1.0
- phpunit/phpunit: 9.*
- symfony/config: ^4.4 || ^5.0
- symfony/console: ^4.0 || ^5.0
- symfony/dependency-injection: ^4.2 || ^5.0
- symfony/event-dispatcher: ^4.0 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/yaml: ^5.0
- twig/twig: ^3.0
Conflicts
- makinacorpus/goat: <2.0
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
:通过PHPext-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