fw3_for_old / builders
Flywheel3 framework: any building library for old php versions
Installs: 9 789
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
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
主な機能
DDL Builder For MySQL 5.6
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 = Table::factory($table_name);
としてインスタンス生成済みとして解説します。
ストレージエンジンの指定
デフォルト文字セットの指定
照合順序の設定
後述のCollationで解説する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 = Collation::factory();
としてインスタンス生成済みとして解説します。
文字セットの指定
言語の指定
接尾辞の設定
Column
この段落では$column = $table->column($column_name);
としてインスタンス生成済みとして解説します。
型の設定
型の設定は必須です。
属性の設定
Index
この段落では$index = $table->index($column_name);
としてインスタンス生成済みとして解説します。
インデックス対象カラムの指定
$index->column(column_name, $length, $order);