fw3_for_old/builders

Flywheel3 framework: any building library for old php versions

1.0.4 2022-07-21 11:42 UTC

This package is auto-updated.

Last update: 2024-11-21 16:51:59 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

主な機能

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などの例外を除き、原則として設定メソッドは全てメソッドチェーンが有効となっています。

  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 = 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);
タイプの設定