libriciel / cakephp-postgres
CakePHP 2.x 使用的 PostgreSQL 数据库插件
2.0.0
2024-01-05 09:07 UTC
Requires
- php: >=7.3.0
This package is not auto-updated.
Last update: 2024-09-28 10:58:20 UTC
README
描述
Postgres 插件提供数据库维护 shell、各种 PostgreSQL 特定实用方法以及 CakePHP 模型验证规则中自动添加的 Pl/PgSQL 模式检查规则
已测试与 PHP 5.5.9、CakePHP 2.9.0、PostgreSQL 8.4.19 兼容
安装
需要在数据库中执行的 SQL 补丁(尤其是 test_database_name)
\i <Plugin Postgres>/Config/sql/cakephp_validate_core.sql
\i <Plugin Postgres>/Config/sql/cakephp_validate_custom.sql
注意
CakePHP 验证规则与 cakephp_validate_custom.sql 文件中的验证规则相对应,位于 PostgresExtraValidationRulesBehavior 类中。
配置
数据库
为了能够使用 PostgtresAutovalidateBehavior 类的功能,需要向字段添加 CHECK 约束。
这可以确保存储在数据库中的数据是正确的,同时 PostgtresAutovalidateBehavior 类将能够直接将这些规则添加到相关模型的验证规则中。
添加约束的示例,以确保 users 表中 active 字段的值只能是 0 或 1(或 NULL)。
ALTER TABLE users ADD CONSTRAINT users_active_in_list_chk CHECK ( cakephp_validate_in_list( active, ARRAY[0, 1] ) );
CakePHP
在文件 app/Config/bootstrap.php 中
CakePlugin::load( 'Postgres', array( 'bootstrap' => true ) );
在文件 app/Config/database.php 中
class DATABASE_CONFIG {
// ...
public $default = array(
'datasource' => 'Postgres.Database/PostgresPostgres',
// ...
);
// ...
}
使用
数据源
PostgresPostgres
- addPostgresForeignKey: 在数据库模式中添加外键约束
- checkPostgresIntervalSyntax: 检查时间间隔的语法
- checkPostgresSqlSyntax: 检查 SQL 代码片段的语法
- dropPostgresForeignKey: 在数据库模式中删除外键约束
- existsPostgresForeignKey: 检查数据库模式中是否存在外键约束
- getPostgresCheckConstraints: 返回表的 CHECK 约束列表
- getPostgresForeignKeys: 返回数据库中的所有外键
- getPostgresFunctions: 返回可用的函数列表
- getPostgresVersion: 获取使用的 PostgreSQL 版本
行为
PostgresAutovalidateBehavior
此行为根据数据库中表的 CHECK 约束自动向附加的模型添加验证规则。
PostgresExtraValidationRulesBehavior
此行为添加 compareDates 和 inlusiveRange 验证规则。
- compareDates: 使用 CakePHP 验证比较规则的方式比较两个日期字段
- inlusiveRange: 与 CakePHP 验证范围规则类似,但边界包含在内
PostgresTableBehavior
- getPostgresCheckConstraints: 返回与模型关联的表的 CHECK 约束列表
- getAllPostgresForeignKeys: 返回数据库中的所有外键
- getPostgresForeignKeys: 返回从或向模型关联的表的字段的外键列表
- getPostgresForeignKeysFrom: 返回从模型关联的表的字段的外键列表
- getPostgresForeignKeysTo: 返回指向模型关联的表的字段的外键列表
壳
PostgresCheckForeignKeysShell
以下命令可用
- missing: 检查数据库中定义的外键与模型关系中外键定义之间的对应关系
示例
sudo -u www-data lib/Cake/Console/cake Postgres.PostgresCheckForeignKeys missing
PostgresMaintenanceShell
以下命令可用
- all: 执行所有维护操作(重新索引、序列、真空)
- sequences:更新自动递增字段的计数器
- vacuum:清理数据库并更新计划器统计信息
- reindex:重建索引
示例
sudo -u www-data lib/Cake/Console/cake Postgres.PostgresMaintenance all
与Jenkins的持续集成
测试
sudo -u www-data ant quality -f plugins/Postgres/Vendor/Jenkins/build.xml
准备
sudo -u www-data ant clear -f plugins/Postgres/Vendor/Jenkins/build.xml
mkdir app/tmp/build
sudo chmod a+rw app/tmp/build
wget https://:8080/jnlpJars/jenkins-cli.jar
在Jenkins中添加作业
java -jar jenkins-cli.jar -s https://:8080 create-job "Plugin CakePHP 2.x Postgres" < plugins/Postgres/Vendor/Jenkins/jobs/build.xml
java -jar jenkins-cli.jar -s https://:8080 create-job "Plugin CakePHP 2.x Postgres Qualité" < plugins/Postgres/Vendor/Jenkins/jobs/quality.xml