fw3_for_old / builders
Flywheel3 框架:适用于旧 PHP 版本的任何构建库
1.0.4
2022-07-21 11:42 UTC
Requires
- php: >=5.3.3
- ext-mbstring: *
- fw3_for_old/strings: >=1.0.0
Requires (Dev)
- fw3_for_old/ez_test: >=1.0.0
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
等例外之外,原则上所有设置方法均有效。
- 创建具有表名的表实例。
$table = Table::factory('テーブル名');
- 添加列。
至少需要列名和类型。
$table->add(
$table->column('primary_id')->int()
);
- 构建。
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);