Schema
in package
Table of Contents
Properties
- $currentTableInfo : array<string|int, mixed>
- 現在のテーブル情報
- $dbIndex : mixed
- 現在のインデックス情報
- $define : array<string|int, mixed>
- 新しいデータベース定義
- $indexDefine : array<string|int, mixed>
- 新しいデータベースのインデックス情報
- $schema : array<string|int, mixed>
- 現在のテーブル定義
- $dbInfo : DatabaseInfo
- $dsn : Dsn
- DB接続情報
- $engineDefine : mixed
- 新しいデータベースのEngine変更情報
- $renameDefine : array<string|int, mixed>
- 新しいデータベースのリネーム情報
Methods
- __construct() : mixed
- Schema constructor.
- buildAddIndexQueries() : array<string|int, string>
- インデックス定義から ALTER 文を組み立てる
- checkAlterSystemTablePermission() : bool
- system table を更新できるか確認
- clearIndex() : mixed
- 指定されたテーブルのインデックスをすべて削除する
- compareColumns() : mixed
- カラム定義の違いを走査
- compareIndex() : mixed
- インデックス定義の違いを走査
- compareTables() : array<string|int, mixed>
- 現在のDBと定義を比較して,差分のテーブル名を配列で返す
- createTables() : mixed
- テーブルを作成する
- dropColumns() : void
- 指定カラムを削除する。
- dropTable() : void
- テーブルを削除する (存在しない場合はノーオペ)
- existsDefinedTable() : bool
- listUp() : array<string|int, mixed>
- 配列のキーを返す・空配列は除かれる
- makeIndex() : mixed
- インデックスを作成する
- resolveColumns() : mixed
- compareColumns走査済みのすべてのカラムを追加・変更する
- resolveEngines() : mixed
- テーブルのEngineを解決する
- resolveRenames() : mixed
- 名前に変更のあったフィールドを解決する
- setSchema() : mixed
- 現 DB のスナップショットを再ロードする。
- unusedColumns() : mixed
- 定義外の未使用カラムを走査
- getDatabaseDefinitionCurrent() : array<string|int, mixed>
- 現在のデータベース定義を取得
- getDatabaseIndexCurrent() : array<string|int, mixed>
- 現在のデータベースインデックス定義を取得
- reloadSchema() : mixed
- reload schema
- safeLogWarning() : void
- ログ出力を防御的に行う
Properties
$currentTableInfo
現在のテーブル情報
public
array<string|int, mixed>
$currentTableInfo
$dbIndex
現在のインデックス情報
public
mixed
$dbIndex
$define
新しいデータベース定義
public
array<string|int, mixed>
$define
$indexDefine
新しいデータベースのインデックス情報
public
array<string|int, mixed>
$indexDefine
$schema
現在のテーブル定義
public
array<string|int, mixed>
$schema
$dbInfo
protected
DatabaseInfo
$dbInfo
$dsn
DB接続情報
protected
Dsn
$dsn
$engineDefine
新しいデータベースのEngine変更情報
protected
mixed
$engineDefine
$renameDefine
新しいデータベースのリネーム情報
protected
array<string|int, mixed>
$renameDefine
Methods
__construct()
Schema constructor.
public
__construct(Dsn $dsn[, SchemaDefinitions|null $definitions = null ]) : mixed
Parameters
- $dsn : Dsn
- $definitions : SchemaDefinitions|null = null
-
yaml 由来のスキーマ定義群。 省略時は本体 + 拡張の Config 経由ロード (= SchemaDefinitions::fromConfig()) を使う。 拡張アプリ単位のスキーマ管理では SchemaDefinitions::fromYaml($dir) を渡す。
buildAddIndexQueries()
インデックス定義から ALTER 文を組み立てる
public
static buildAddIndexQueries(string $table, array<string|int, mixed> $definitions) : array<string|int, string>
PRIMARY KEY 定義も対象に含める。setup のインデックス修復などで PRIMARY KEY が失われた環境を、アップデート時に復元できるようにするため。 呼び出し側(compareIndex)が既存の PRIMARY KEY を持つテーブルを除外している前提。
Parameters
- $table : string
- $definitions : array<string|int, mixed>
Return values
array<string|int, string>checkAlterSystemTablePermission()
system table を更新できるか確認
public
checkAlterSystemTablePermission() : bool
Return values
boolclearIndex()
指定されたテーブルのインデックスをすべて削除する
public
clearIndex(string $table) : mixed
Parameters
- $table : string
compareColumns()
カラム定義の違いを走査
public
compareColumns(string $table) : mixed
Parameters
- $table : string
compareIndex()
インデックス定義の違いを走査
public
compareIndex(string $table) : mixed
Parameters
- $table : string
compareTables()
現在のDBと定義を比較して,差分のテーブル名を配列で返す
public
compareTables() : array<string|int, mixed>
Return values
array<string|int, mixed>createTables()
テーブルを作成する
public
createTables(array<string|int, string> $tables[, array<string|int, mixed>|null $idx = null ]) : mixed
Parameters
- $tables : array<string|int, string>
- $idx : array<string|int, mixed>|null = null
dropColumns()
指定カラムを削除する。
public
dropColumns(string $table[, array<int, string> $columns = [] ]) : void
指定カラム数が $this->schema[$table] のカラム数と一致する場合は、
テーブル全体を DROP する (旧 setup/lib/schema.php の同名メソッドと等価)。
Parameters
- $table : string
- $columns : array<int, string> = []
dropTable()
テーブルを削除する (存在しない場合はノーオペ)
public
dropTable(string $table) : void
Parameters
- $table : string
existsDefinedTable()
public
existsDefinedTable() : bool
Return values
boollistUp()
配列のキーを返す・空配列は除かれる
public
listUp(mixed $ary) : array<string|int, mixed>
Parameters
- $ary : mixed
Return values
array<string|int, mixed>makeIndex()
インデックスを作成する
public
makeIndex(mixed $table, mixed $res) : mixed
Parameters
- $table : mixed
- $res : mixed
resolveColumns()
compareColumns走査済みのすべてのカラムを追加・変更する
public
resolveColumns(string $table, array<string|int, mixed> $add, array<string|int, mixed> $change) : mixed
Parameters
- $table : string
- $add : array<string|int, mixed>
- $change : array<string|int, mixed>
resolveEngines()
テーブルのEngineを解決する
public
resolveEngines() : mixed
resolveRenames()
名前に変更のあったフィールドを解決する
public
resolveRenames() : mixed
setSchema()
現 DB のスナップショットを再ロードする。
public
setSchema() : mixed
yaml 由来の定義 (define / index / rename / engine) は constructor で確定させており、 このメソッドでは現 DB のテーブル構成 ($this->schema) と既存インデックス ($this->dbIndex) のみを再取得する。
unusedColumns()
定義外の未使用カラムを走査
public
unusedColumns(mixed $table) : mixed
Parameters
- $table : mixed
getDatabaseDefinitionCurrent()
現在のデータベース定義を取得
protected
getDatabaseDefinitionCurrent() : array<string|int, mixed>
Return values
array<string|int, mixed>getDatabaseIndexCurrent()
現在のデータベースインデックス定義を取得
protected
getDatabaseIndexCurrent() : array<string|int, mixed>
Return values
array<string|int, mixed>reloadSchema()
reload schema
protected
reloadSchema() : mixed
safeLogWarning()
ログ出力を防御的に行う
protected
safeLogWarning(string $message[, array<string|int, mixed> $context = [] ]) : void
アップデート処理はアップグレード元(旧バージョン)のアプリ文脈で実行されることがあり、 後発で追加された Logger サービスがコンテナに未登録の場合がある。ログ出力の失敗が アップグレード自体を止めないよう、クラス存在確認と例外捕捉で保護する。
Parameters
- $message : string
- $context : array<string|int, mixed> = []