conserto/pomm-bundle

Pomm 的 Symfony 扩展包

安装: 6,835

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 0

分支: 31

类型:symfony-bundle

5.1.2 2024-06-11 13:26 UTC

README

Latest Stable Version CI Status Monthly Downloads License

这是一个 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 是用于的默认会话服务的名称,如果留空则使用默认值