conserto / pomm-bundle
Pomm 的 Symfony 扩展包
Requires
- php: >=8.1
- conserto/pomm-cli: ^3.0
- conserto/pomm-model-manager: ^3.0
- conserto/pomm-symfony-bridge: ^4.0
- jdorn/sql-formatter: ~1.2
- symfony/framework-bundle: ^6.0|^7.0
- symfony/http-kernel: ^6.2|^7.0
- twig/twig: ~3.0
Requires (Dev)
- phpstan/phpstan: ^1.8
- squizlabs/php_codesniffer: ~3.7
- symfony/console: ^6.0|^7.0
Suggests
- symfony/web-profiler-bundle: Display queries log
- dev-main
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.x-dev
- 5.0.1
- 5.0.0
- 4.0.x-dev
- 4.0.1
- 4.0.0
- 3.0.0
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3.0
- 2.3.0-rc.3
- 2.3.0-rc.2
- 2.3.0-rc.1
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.0
- dev-feat/v5.1.0
- dev-feat/fix_containerawaretrait_deprecated
- dev-merge/5.0
- dev-fix/bundle_deprecations
- dev-fix/ci_tests
- dev-mdou/remove_sensio_framework_extra_bundle
- dev-report_forked_fixes_and_improvements
- dev-develop
This package is auto-updated.
Last update: 2024-09-11 14:00:54 UTC
README
这是一个 Pomm 数据库框架 Pomm 扩展包组件的分支。
此扩展包提供了一个 pomm
服务,用于在 Symfony 中使用 Pomm 模型管理器。
注意
如果您正在寻找适用于 Pomm 2.x 的扩展包,请通过 Packagist 搜索 pomm-project/pomm-bundle
。如果您正在寻找适用于 Pomm 1.x 的扩展包,请通过 Packagist 搜索 pomm/pomm-bundle
。
安装
composer require conserto/pomm-bundle
配置
在 app/config
文件夹中,将您的数据库连接参数存储在 parameters.yml
文件中。
parameters: db_host1: 127.0.0.1 db_port1: 5432 db_name1: my_db_name db_user1: user db_password1: pass db_host2: 127.0.0.1 # etc.
敏感信息,如数据库凭证,不应提交到 Git。为了帮助您防止意外提交这些文件和文件夹,Symfony 标准分发版附带一个名为 .gitignore 的文件,该文件列出了 Git 应忽略的资源,包括此 parameters.yml
文件。您现在可以通过将它们包围在百分号 (%) 中来在其他地方引用这些参数。
在 config.yml
中添加一个条目
pomm: configuration: my_db1: dsn: "pgsql://%db_user1%:%db_password1%@%db_host1%:%db_port1%/%db_name1%" pomm:default: true my_db2: dsn: "pgsql://%db_user2%:%db_password2%@%db_host2%:%db_port2%/%db_name2%" session_builder: "pomm.session_builder" logger: service: "@logger"
并在 routing_dev.yml
中
_pomm: resource: "@PommBundle/Resources/config/routing.yml" prefix: /_pomm
命令行界面
通过 bin/console
工具,您可以使用 Pomm CLI 浏览数据库或生成模型文件。
$ ./bin/console pomm:generate:relation-all -d src -a 'AppBundle\Model' my_db1 student
如果您想生成模式,则需要使用模型管理器会话构建器
pomm: configuration: my_db1: dsn: "pgsql://%db_user1%:%db_password1%@%db_host1%:%db_port1%/%db_name1%" session_builder: "pomm.model_manager.session_builder"
从控制器中使用 Pomm
Pomm 服务在 DIC 中与其他服务一样可用
function myAction($name) { $students = $this->get('pomm')['my_db2'] ->getModel('\AppBundle\Model\MyDb1\PublicSchema\StudentModel') ->findWhere('name = $*', [$name]) ; …
现在可以根据快速入门指南中描述的方式调整和创建模型层。
值解析器
此扩展包提供了一个 值解析器,将请求转换为灵活的实体。解析器在请求中搜索与主键名称匹配的参数。
您可以在属性 #[Entity] 中指定要使用的连接
public function getAction(#[Entity('my_db2')] Student $student)
默认情况下,用于查找实体的模型是通过在实体类名称中添加 Model
来推导的。如果您有不同的类名称,您可以使用 modelClass
选项
public function getAction(#[Entity(modelClass: 'StudentModel')] Student $student)
此功能需要 symfony/http-kernel。
序列化器
您可以使用 序列化器 组件序列化实体。
属性信息
此扩展包还提供 属性信息 支持,以检索灵活实体的属性信息。
作为服务使用池化器
如果您需要将额外的池化器添加到会话构建器中,只需将服务定义标记为 pomm.pooler
即可。
模型和模型层作为服务
可以将模型和模型层对象注册为服务。为了正确工作,您必须正确标记您的服务并从配置中删除 class:session_builder
。
模型必须标记为 pomm.model
,层必须标记为 pomm.model_layer
这两个标签都有以下参数
pooler
是默认池化器服务的名称,如果留空则使用默认值session
是用于的默认会话服务的名称,如果留空则使用默认值