pomm-project / pomm-bundle
Pomm2 的 Symfony2 扩展包
Requires
- php: >=7.1
- jdorn/sql-formatter: ~1.2
- pomm-project/cli: ~2.0
- pomm-project/model-manager: ~2.0
- pomm-project/pomm-symfony-bridge: ~2.5|~3.0
- symfony/framework-bundle: ^3.4|^4.3|^5.0
Requires (Dev)
- squizlabs/php_codesniffer: ~2.7
- symfony/console: ^3.4|^4.3|^5.0
Suggests
- sensio/distribution-bundle: To use the entity param converter
- symfony/web-profiler-bundle: Display queries log
This package is auto-updated.
Last update: 2024-09-21 03:08:20 UTC
README
虽然这个扩展包已经可以使用,但它仍在开发中。将添加新功能。
此扩展包提供了一个 pomm
服务,用于使用 Pomm2 模型管理器 与 Symfony 一起使用。
注意
如果你正在寻找 Pomm 1.x 的扩展包,请在 Packagist 上查找 pomm/pomm-bundle
。
安装
composer require pomm-project/pomm-bundle
注意
Pomm 扩展包支持 symfony flex,该 菜谱 添加了用于分析面板的路由,以及从 DATABASE_URL
环境变量加载的 db
会话的最小配置。
设置
将扩展包添加到 app/AppKernel.php
文件中
<?php // app/AppKernel.php // … public function registerBundles() { $bundles = [ // other bundles new \PommProject\PommBundle\PommBundle(), // other bundles ];
配置
在 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]) ; …
现在可以调整和创建模型层,如 快速入门指南 中所述。
参数转换器
此扩展包提供了一个 参数转换器,用于将请求转换为灵活的实体。转换器在请求中搜索与主键名称匹配的参数。
您可以在选项中指定要使用的连接
/** * @ParamConverter("student", options={"session": "my_db2"}) */ public function getAction(Student $student)
默认情况下,用于查找实体的模型是通过将 Model
添加到实体类名称中推断出来的。如果您有不同的类名称,您可以使用 model
选项
/** * @ParamConverter("student", options={"model": "StudentModel"}) */ public function getAction(Student $student)
此功能需要 sensio/framework-extra-bundle。
序列化器
您可以使用 序列化器 组件来序列化实体。
属性信息
此扩展包还提供 属性信息 支持,以检索灵活实体属性信息。
作为服务使用连接池
如果您需要向会话构建器添加额外的连接池,您只需要给服务定义添加 pomm.pooler
标签
模型和模型层作为服务
模型和模型层对象可以作为服务注册。为此,您必须正确标记您的服务并从配置中删除 class:session_builder
。
模型必须使用 pomm.model
标记,层必须使用 pomm.model_layer
标记
这两个标记都有以下参数
pooler
,这是默认池化服务名称,如果留空,则使用默认值session
,这是默认会话服务名称,从该服务使用,如果留空,则使用默认值