スキーマ

スキーマはSymfony 1 の doctrine/schema.yml に近いイメージです。
Doctrine の inheritance も一通り対応しています。
特徴的な構造として、モデルは必ずグループの下に分類されます。 一つのデータベースに数百のテーブルがあるとディレクトリツリーが長くなったり管理が困ることになりますので、1階層分グループ分けできるようになっています。 テーブル名がマルチバイト文字や複数形にも対応していますが、GraphQLがマルチバイトに対応していないため注意が必要です。

Schema Definition


Config Definition

データベース設定

Properties

TypeDescriptionRequired
db_nointegerリンカーで使用されるデータベースナンバー 自動生成では毎回現在時刻が使用されるので、強制上書き時に固定する場合に指定する
dbDbType使用するDB。現在のところmysqlのみ対応Yes
titlestring仕様書等のためのタイトル
authorstring仕様書等のための著者
ignore_foreign_keybooleantrueの場合は外部キー制約をDDLに出力しない
plural_table_namebooleanテーブル名を複数形にする
timestampableTimestampableデフォルトのタイムスタンプ設定
time_zoneTimeZone日時型のデフォルトのタイムゾーン設定
timestamp_time_zoneTimeZonecreated_at, updated_at, deleted_atに使用されるタイムゾーン
soft_deleteSoftDelete論理削除のデフォルト設定
use_cachebooleanキャッシュ使用のデフォルト設定
use_fast_cacheboolean高速キャッシュ使用設定(experimental)
use_cache_allboolean全キャッシュ使用のデフォルト設定
use_insert_delayedboolean遅延INSERTを使用する
use_save_delayedboolean遅延SAVEを使用する
use_update_delayedboolean遅延UPDATEを使用する
use_upsert_delayedboolean遅延UPSERTを使用する
tx_isolationIsolation更新トランザクション分離レベル
read_tx_isolationIsolation参照トランザクション分離レベル
enginestringMySQLのストレージエンジン
character_setstring文字セット
collatestring文字セット照合順序
preserve_column_orderbooleanDDL出力時のカラム順序維持設定
groupsMap<property, GroupDef>モデルグループYes

DB type

Allowed values

  • mysql

Timestampable

any of the following

  • none
  • real_time(クエリー実行日時)
  • fixed_time(DbConnの生成日時)

TimeZone

Allowed values

  • local
  • utc

SoftDelete

any of the following

  • none
  • time
  • flag
  • unix_time(ユニーク制約に使用するためのUNIXタイムスタンプ UNIX time for unique index support)

Isolation

Allowed values

  • repeatable_read
  • read_committed
  • read_uncommitted
  • serializable

Group Def

Properties

TypeDescriptionRequired
typeGroupTypeYes
titlestring
modelsMap<property, ModelDef>
enumsMap<property, EnumDef>

Group Type

any of the following

  • model(モデル定義)
  • enum(列挙型定義のみ)

Model Def

Properties

TypeDescriptionRequired
titlestring仕様書等のためのタイトル
commentstringコメント
table_namestringテーブル名
ignore_foreign_keybooleantrueの場合は外部キー制約をDDLに出力しない
timestampableTimestampableタイムスタンプ設定
disable_created_atbooleancreated_atの無効化
disable_updated_atbooleanupdated_atの無効化
soft_deleteSoftDelete論理削除設定
versionedbooleanキャッシュ整合性のためのバージョンを使用するか
countingstringsave_delayedでカウンターを使用するカラム
use_cachebooleanキャッシュを使用するか
use_fast_cacheboolean高速キャッシュを使用するか(experimental)
use_cache_allboolean全キャッシュを使用するか
use_cache_all_with_conditionboolean条件付き全キャッシュを使用するか
use_insert_delayedboolean遅延INSERTを使用する
use_save_delayedboolean遅延SAVEを使用する
use_update_delayedboolean遅延UPDATEを使用する
use_upsert_delayedboolean遅延UPSERTを使用する
ignore_propagated_insert_cacheboolean他サーバでinsertされたデータをキャッシュするか
on_delete_fnboolean物理削除時の_before_deleteと_after_deleteの呼び出しを行うか
abstractboolean抽象化モード
inheritanceInheritance継承モード
enginestringMySQLのストレージエンジン
character_setstring文字セット
collatestring文字セット照合順序
mod_namestring名前にマルチバイトを使用した場合のmod名
act_asActAs機能追加
exclude_from_apibooleanAPI生成から除外する
columnsMap<property, ColumnTypeOrDef>カラム
relationsMap<property, RelDef>リレーション
indexesMap<property, IndexDef>インデックス

Inheritance

Properties

TypeDescriptionRequired
extendsstring継承元Yes
typeInheritanceType継承タイプYes
key_fieldstringcolumn_aggregationの場合のキーカラム
key_value[boolean, number, string, integer]column_aggregationの場合のキーの値

Inheritance Type

any of the following

  • simple(単一テーブル継承 子テーブルのカラムも含めたすべてのカラムを親となるテーブルに格納する)
  • concrete(具象テーブル継承 子クラスごとに共通のカラムとそれぞれのモデルのカラムをすべて含んだ状態で独立したテーブルを作成する)
  • column_aggregation(カラム集約テーブル継承 単一テーブル継承と似ているが、型を特定するための _type カラムがある)

ActAs Definition

Properties

TypeDescriptionRequired
sessionbooleanセッションDBとして使用

Column Type Or Def

any of the following


Column Def

Properties

TypeDescriptionRequired
titlestring
commentstring
typeColumnTypeYes
signedboolean指定がない場合はunsigned
not_nullboolean指定がない場合はnullable
primaryboolean
auto_incrementAutoIncrement
lengthinteger長さ(文字列の場合はバイト数ではなく、文字数)
maxinteger最大値(decimalは非対応)
mininteger最小値(decimalは非対応)
collatestring
not_serializablebooleanserializeに出力しない(パスワード等保護用)
precisioninteger
scaleinteger
time_zoneTimeZone
enum_valuesArray<EnumValue>列挙型の値
db_enum_valuesArray<DbEnumValue>DBの列挙型を使用する場合の値
enum_modelstringスキーマ内で定義された列挙値名 (名前は::区切り)
json_classstringJson型で使用する型名
exclude_from_cachebooleanキャッシュからの除外設定
skip_factorybooleanfactoryからの除外設定
renamestringカラム名の別名設定
sridintegerPoint型のSRID
defaultstring
sql_commentstring
api_visibilityApiVisibilityAPI可視性
api_requiredbooleanAPI入力時必須

Column Type

Allowed values

  • tinyint
  • smallint
  • int
  • bigint
  • float
  • double
  • varchar
  • boolean
  • text
  • blob
  • timestamp
  • datetime
  • date
  • time
  • decimal
  • array_int
  • array_string
  • json
  • enum
  • db_enum
  • db_set
  • point

Auto Increment

Allowed values

  • auto

Enum Value

Properties

TypeDescriptionRequired
namestringYes
titlestring
commentstring
valueinteger0~255の値Yes

DB Enum Value

Properties

TypeDescriptionRequired
namestringYes
titlestring
commentstring

API Visibility

Allowed values

  • readonly
  • hidden

Column Subset Type

Allowed values

  • tinyint
  • smallint
  • int
  • bigint
  • float
  • double
  • varchar
  • boolean
  • text
  • blob
  • datetime
  • date
  • time
  • decimal
  • array_int
  • array_string
  • json
  • tinyint_not_null
  • smallint_not_null
  • int_not_null
  • bigint_not_null
  • float_not_null
  • double_not_null
  • varchar_not_null
  • boolean_not_null
  • text_not_null
  • blob_not_null
  • datetime_not_null
  • date_not_null
  • time_not_null
  • decimal_not_null
  • array_int_not_null
  • array_string_not_null
  • json_not_null

Relation Def

Properties

TypeDescriptionRequired
titlestring
commentstring
modelstring結合先のモデル 他のグループは::区切りで指定
typeRelationsType
localstring結合するローカルのカラム名
foreignstring結合先のカラム名
in_cachebooleanmanyあるいはone_to_oneの場合にリレーション先も一緒にキャッシュするか 結合深さは1代のみで子テーブルは親に含んだ状態で更新する必要がある
raw_condstringリレーションを取得する際の追加条件 記述例:rel_group_model::Cond::Eq(rel_group_model::ColOne::value(1))
order_bystring
descboolean
limitinteger
use_cacheboolean
use_cache_with_trashedbooleanリレーション先が論理削除されていてもキャッシュを取得する
on_deleteReferenceOptionDBの外部キー制約による削除およびソフトウェア側での削除制御
on_updateReferenceOptionDBの外部キー制約による更新

Relations Type

Allowed values

  • many
  • one
  • one_to_one

Reference Option

Allowed values

  • restrict
  • cascade
  • set_null
  • set_zero

Index Def

Properties

TypeDescriptionRequired
fieldsMap<property, IndexFieldDef>
typeIndexType
parserParser

Index Field Def

Properties

TypeDescriptionRequired
sortingSortType
lengthinteger

Sort Type

Allowed values

  • asc
  • desc

Index Type

Allowed values

  • index
  • unique
  • fulltext
  • spatial

Parser

Allowed values

  • ngram
  • mecab

Enum Def

Properties

TypeDescriptionRequired
titlestringタイトル
commentstringコメント
enum_valuesArray<EnumValue>列挙値Yes
mod_namestring列挙子の名前にマルチバイトを使用した場合のmod名