fw3_for_old/builders

Flywheel3 框架:适用于旧 PHP 版本的任何构建库

1.0.4 2022-07-21 11:42 UTC

This package is auto-updated.

Last update: 2024-09-21 16:29:10 UTC


README

作为 Rapid Development Framework 的 Flywheel3 简易构建器。

目标版本及测试版本

目标版本:PHP5.3.3 及以上

测试版本

  • 5.3.3
  • 5.3.4
  • 5.3.5
  • 5.3.6
  • 5.3.7
  • 5.3.8
  • 5.3.9
  • 5.4.16
  • 5.4.39
  • 5.4.45
  • 5.5.38
  • 5.6.40
  • 7.0.33
  • 7.1.33
  • 7.2.33
  • 7.3.21
  • 7.4.0
  • 7.4.9
  • 8.0.0
  • 8.0.3

主要功能

MySQL 5.6 的 DDL Builder

针对 MySQL 5.6 的简单 DDL Builder。

执行后示例

代码

$table  = Table::factory('test_table');

$table->add(
    $table->column('primary_id')->int()->unsigned()->notNull()->autoIncrement()->comment('プライマリID'),
    $table->column('secondary_id')->int()->unsigned()->notNull()->comment('セカンダリID'),
    $table->column('name')->varchar(50)->defaultValue(null)->comment('名前'),
    $table->column('sex')->tinyint()->defaultValue(0)->comment('性別', array(
        'unknown'   => array(0, '未選択'),
        'male'      => array(1, '男性'),
        'female'    => array(2, '女性'),
        'other'     => array(3, 'その他'),
    )),
    $table->column('mail_address')->varchar(191)->notNull()->comment('連絡先メールアドレス'),
    $table->column('star')->int()->defaultValue(0)->comment('いいねの数'),
    $table->column('remarks')->text()->comment('備考'),
    $table->index(array('secondary_id', 'name')),
    $table->index('mail_address')->unique()
);

$table->primaryKey('primary_id');

$table->innoDb();

$table->utf8mb4();

$table->collation(Collation::factory()->utf8mb4()->japanese()->ci());

$table->comment('簡易DDLビルダーサンプル');

echo $table->build();

执行结果:PHP5.4 及以上时

CREATE TABLE `test_table` (
  `primary_id`    int unsigned  NOT NULL              AUTO_INCREMENT  COMMENT 'プライマリID',
  `secondary_id`  int unsigned  NOT NULL                              COMMENT 'セカンダリID',
  `name`          varchar(50)             DEFAULT ''                  COMMENT '名前',
  `sex`           tinyint                 DEFAULT '0'                 COMMENT '性別 const:{"unknown":[0,"未選択"],"male":[1,"男性"],"female":[2,"女性"],"other":[3,"その他"]}',
  `mail_address`  varchar(191)  NOT NULL                              COMMENT '連絡先メールアドレス',
  `star`          int                     DEFAULT '0'                 COMMENT 'いいねの数',
  `remarks`       text                                                COMMENT '備考',
  PRIMARY KEY (`primary_id`),
  INDEX         idx_mul01_test_table        (`secondary_id`, `name`),
  UNIQUE INDEX  idx_mail_address_test_table (`mail_address`)
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4 DEFAULT COLLATE=utf8mb4_japanese_ci COMMENT '簡易DDLビルダーサンプル';

执行结果:PHP5.3 时

CREATE TABLE `test_table` (
  `primary_id`    int unsigned  NOT NULL              AUTO_INCREMENT  COMMENT 'プライマリID',
  `secondary_id`  int unsigned  NOT NULL                              COMMENT 'セカンダリID',
  `name`          varchar(50)             DEFAULT ''                  COMMENT '名前',
  `sex`           tinyint                 DEFAULT '0'                 COMMENT '性別 const:{"unknown":[0,"\u672a\u9078\u629e"],"male":[1,"\u7537\u6027"],"female":[2,"\u5973\u6027"],"other":[3,"\u305d\u306e\u4ed6"]}',
  `mail_address`  varchar(191)  NOT NULL                              COMMENT '連絡先メールアドレス',
  `star`          int                     DEFAULT '0'                 COMMENT 'いいねの数',
  `remarks`       text                                                COMMENT '備考',
  PRIMARY KEY (`primary_id`),
  INDEX         idx_mul01_test_table        (`secondary_id`, `name`),
  UNIQUE INDEX  idx_mail_address_test_table (`mail_address`)
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4 DEFAULT COLLATE=utf8mb4_japanese_ci COMMENT '簡易DDLビルダーサンプル';

使用方法

1. 安装

在可以使用 composer 的环境中

执行以下命令进行安装。

composer require fw3_for_old/builders

2. 构建DDL(必要时最小化)

通知

index等例外之外,原则上所有设置方法均有效。

  1. 创建具有表名的表实例。
$table  = Table::factory('テーブル名');
  1. 添加列。

至少需要列名和类型。

$table->add(
    $table->column('primary_id')->int()
);
  1. 构建。
echo $table->build();

将显示如下。

CREATE TABLE `テーブル名` (
  `primary_id`  int
);

可以简洁地写成如下。

echo Table::factory('テーブル名')->add(function ($table) {
    return array(
        $table->column('primary_id')->int()
    );
})->build();

3. 精细设置

本段中,将使用$table = Table::factory($table_name);作为已创建实例进行说明。

指定存储引擎
指定默认字符集
设置校对顺序

使用后续的校对中解释的Collation实例作为参数。

$table->collation(Collation::factory()->utf8mb4()->general()->ci());
设置表注释
$table->comment('コメント');
创建列实例

仅创建列实例,不进行添加。添加请使用Table::add();

$table->column('カラム名');
创建索引实例

仅创建索引实例,不进行添加。添加请使用Table::add();

单列情况

$table->index('対象カラム1', 'インデックス名');

多列情况

$table->index(array('対象カラム1', '対象カラム2'), 'インデックス名');
设置主键

单列情况

$table->primaryKey('対象カラム1');

多列情况

$table->primaryKey(array('対象カラム1', '対象カラム2'));
添加列或索引

通过使用Table::column()方法或Table::index()方法创建的实例进行添加即可实现。

有多种方法可以提供。

即时值评估

$table->add(array(
    $table->column('カラム1'),
    $table->index('カラム1'),
));
$table->add(
    $table->column('カラム1'),
    $table->index('カラム1'),
);

延迟评估

$table->add(function ($table) {
    return array(
        $table->column('カラム1'),
        $table->index('カラム1'),
    );
});
$table->add(function ($table) {
    $table->add(
        $table->column('カラム1'),
        $table->index('カラム1'),
    );
});

校对

本段中,将使用$collation = Collation::factory();作为已创建实例进行说明。

指定字符集
指定语言
设置后缀

本段中,将使用$column = $table->column($column_name);作为已创建实例进行说明。

设置类型

类型设置是必需的。

设置属性

索引

本段中,将使用$index = $table->index($column_name);作为已创建实例进行说明。

指定索引目标列
$index->column(column_name, $length, $order);
设置类型