pomm-project/pomm-bundle

Pomm2 的 Symfony2 扩展包

安装次数: 181,443

依赖项: 5

建议: 0

安全性: 0

星标: 81

关注者: 13

分支: 31

开放问题: 11

类型:symfony-bundle

3.0.0 2020-10-18 19:57 UTC

README

Build Status Scrutinizer Code Quality

虽然这个扩展包已经可以使用,但它仍在开发中。将添加新功能。

此扩展包提供了一个 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,这是默认会话服务名称,从该服务使用,如果留空,则使用默认值