Pomm 的命令行工具。

2.1.0 2023-01-09 10:24 UTC

This package is auto-updated.

Last update: 2024-09-03 15:52:17 UTC


README

这是 Pomm 数据库框架的 Cli 组件。

Latest Stable Version Scrutinizer Code Quality Build Status Monthly Downloads License

配置

Pomm 的 Cli 与开发环境无关,它不知道项目中使用哪些配置类型和文件。要使 Cli 正常工作,需要创建一个简单的 PHP 引导文件,该文件返回一个 Pomm 实例。默认名称为 .pomm_cli_bootstrap.php。如果项目已经有一个返回配置 Pomm 实例的脚本,可以使用选项 -b|--bootstrap-file="..." 指定它。

数据库检查

使用 inspect 命令通过 Foundation.Inspector 显示数据库结构信息。

  • pomm:inspect:database - 获取数据库中的模式。
  • pomm:inspect:schema - 获取模式中的关系信息。
  • pomm:inspect:relation - 获取关系的信息。
$ ./bin/pomm.php pomm:inspect:schema my_db_config

Found 3 relations in schema 'public'.
+-------------+-------+--------+---------+
| name        | type  | oid    | comment |
+-------------+-------+--------+---------+
| pika        | view  | 126516 | pika    |
| test_unique | table | 127619 |         |
| worker      | table | 126525 |         |
+-------------+-------+--------+---------+
$ ./bin/pomm.php pomm:inspect:relation archived_document my_db_config pylone

Relation pylone.archived_document
+----+-------------+-----------+---------+---------+---------+
| pk | name        | type      | default | notnull | comment |
+----+-------------+-----------+---------+---------+---------+
| *  | document_id | uuid      |         | yes     |         |
|    | title       | varchar   |         | yes     |         |
|    | archived_at | timestamp | now()   | yes     |         |
| *  | version     | int4      |         | yes     |         |
|    | usable      | bool      |         | no      |         |
+----+-------------+-----------+---------+---------+---------+

代码生成

generate 命令为使用 Pomm 的 ModelManager 包的数据库关系创建 PHP 类。

  • pomm:generate:structure - 根据关系结构生成 RowStructure 类。
  • pomm:generate:model - 生成一个新的配置 Model 类。
  • pomm:generate:entity - 生成一个空的 FlexibleEntity 类。
  • pomm:generate:relation-all - 为给定关系生成上述 3 个文件。
  • pomm:generate:schema-all - 为给定模式中的每个关系生成上述 3 个文件。

由于您将在生成的 Model 和 FlexibleEntity 类中添加自己的方法,因此默认情况下它们不会被 generate 命令覆盖。可以通过隐式指定选项 --force 来实现这一点。所有被覆盖类中的代码都将丢失,并替换为一个全新的类。结构文件总是覆盖,而无需事先确认。为了避免混淆这两种类型的类,结构类保存在 AutoStructure 子目录下。

前缀选项

默认情况下,Pomm 的 ModelManager 期望至少使用以下命名空间保存类: DatabaseConfigName\SchemaSchema。可以告诉 Cli 这个结构从哪里开始以及如何调整。

  • --prefix-dir, -d - 指示命名空间目录树的起始位置。
  • --prefix-ns, -a - 指示可选的命名空间前缀。

当未指定任何选项时,生成所有公共模式的关系将类似于以下

$ ./bin/pomm.php pomm:generate:schema-all -v pomm_test
 ✓  Creating file './PommTest/PublicSchema/AutoStructure/Pika.php'.
 ✓  Creating file './PommTest/PublicSchema/PikaModel.php'.
 ✓  Creating file './PommTest/PublicSchema/Pika.php'.
 ✓  Creating file './PommTest/PublicSchema/AutoStructure/TestUnique.php'.
 ✓  Creating file './PommTest/PublicSchema/TestUniqueModel.php'.
 ✓  Creating file './PommTest/PublicSchema/TestUnique.php'.
 ✓  Creating file './PommTest/PublicSchema/AutoStructure/Worker.php'.
 ✓  Creating file './PommTest/PublicSchema/WorkerModel.php'.
 ✓  Creating file './PommTest/PublicSchema/Worker.php'.

$ tree PommTest
PommTest/
└── PublicSchema
    ├── AutoStructure
    │   ├── Pika.php
    │   ├── TestUnique.php
    │   └── Worker.php
    ├── PikaModel.php
    ├── Pika.php
    ├── TestUniqueModel.php
    ├── TestUnique.php
    ├── WorkerModel.php
    └── Worker.php

2 directories, 9 files

通常,将模型命名空间放置在项目的根目录下不是一个好主意。大多数情况下,它被放置在 sources/lib 目录下的 Model 命名空间中。

$ ./bin/pomm.php pomm:generate:schema-all --prefix-dir sources/lib --prefix-ns Model pomm_test
 ✓  Creating file 'sources/lib/Model/PommTest/PublicSchema/AutoStructure/Pika.php'.
…