libriciel/cakephp-postgres

CakePHP 2.x 使用的 PostgreSQL 数据库插件

安装: 661

依赖: 0

建议者: 0

安全: 0

类型:cakephp-plugin

2.0.0 2024-01-05 09:07 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