スキーマ
スキーマはSymfony 1 の doctrine/schema.yml に近いイメージです。
Doctrine の inheritance も一通り対応しています。
特徴的な構造として、モデルは必ずグループの下に分類されます。
一つのデータベースに数百のテーブルがあるとディレクトリツリーが長くなったり管理が困ることになりますので、1階層分グループ分けできるようになっています。
テーブル名がマルチバイト文字や複数形にも対応していますが、GraphQLがマルチバイトに対応していないため注意が必要です。
Schema Definition
Config Definition
データベース設定
Properties
Type | Description | Required | |
---|---|---|---|
db_no | integer | リンカーで使用されるデータベースナンバー 自動生成では毎回現在時刻が使用されるので、強制上書き時に固定する場合に指定する | |
db | DbType | 使用するDB。現在のところmysqlのみ対応 | Yes |
title | string | 仕様書等のためのタイトル | |
author | string | 仕様書等のための著者 | |
ignore_foreign_key | boolean | trueの場合は外部キー制約をDDLに出力しない | |
plural_table_name | boolean | テーブル名を複数形にする | |
timestampable | Timestampable | デフォルトのタイムスタンプ設定 | |
time_zone | TimeZone | 日時型のデフォルトのタイムゾーン設定 | |
timestamp_time_zone | TimeZone | created_at, updated_at, deleted_atに使用されるタイムゾーン | |
soft_delete | SoftDelete | 論理削除のデフォルト設定 | |
use_cache | boolean | キャッシュ使用のデフォルト設定 | |
use_fast_cache | boolean | 高速キャッシュ使用設定(experimental) | |
use_cache_all | boolean | 全キャッシュ使用のデフォルト設定 | |
use_insert_delayed | boolean | 遅延INSERTを使用する | |
use_save_delayed | boolean | 遅延SAVEを使用する | |
use_update_delayed | boolean | 遅延UPDATEを使用する | |
use_upsert_delayed | boolean | 遅延UPSERTを使用する | |
tx_isolation | Isolation | 更新トランザクション分離レベル | |
read_tx_isolation | Isolation | 参照トランザクション分離レベル | |
engine | string | MySQLのストレージエンジン | |
character_set | string | 文字セット | |
collate | string | 文字セット照合順序 | |
preserve_column_order | boolean | DDL出力時のカラム順序維持設定 | |
groups | Map<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
Type | Description | Required | |
---|---|---|---|
type | GroupType | Yes | |
title | string | ||
models | Map<property, ModelDef> | ||
enums | Map<property, EnumDef> |
Group Type
any of the following
model
(モデル定義)enum
(列挙型定義のみ)
Model Def
Properties
Type | Description | Required | |
---|---|---|---|
title | string | 仕様書等のためのタイトル | |
comment | string | コメント | |
table_name | string | テーブル名 | |
ignore_foreign_key | boolean | trueの場合は外部キー制約をDDLに出力しない | |
timestampable | Timestampable | タイムスタンプ設定 | |
disable_created_at | boolean | created_atの無効化 | |
disable_updated_at | boolean | updated_atの無効化 | |
soft_delete | SoftDelete | 論理削除設定 | |
versioned | boolean | キャッシュ整合性のためのバージョンを使用するか | |
counting | string | save_delayedでカウンターを使用するカラム | |
use_cache | boolean | キャッシュを使用するか | |
use_fast_cache | boolean | 高速キャッシュを使用するか(experimental) | |
use_cache_all | boolean | 全キャッシュを使用するか | |
use_cache_all_with_condition | boolean | 条件付き全キャッシュを使用するか | |
use_insert_delayed | boolean | 遅延INSERTを使用する | |
use_save_delayed | boolean | 遅延SAVEを使用する | |
use_update_delayed | boolean | 遅延UPDATEを使用する | |
use_upsert_delayed | boolean | 遅延UPSERTを使用する | |
ignore_propagated_insert_cache | boolean | 他サーバでinsertされたデータをキャッシュするか | |
on_delete_fn | boolean | 物理削除時の_before_deleteと_after_deleteの呼び出しを行うか | |
abstract | boolean | 抽象化モード | |
inheritance | Inheritance | 継承モード | |
engine | string | MySQLのストレージエンジン | |
character_set | string | 文字セット | |
collate | string | 文字セット照合順序 | |
mod_name | string | 名前にマルチバイトを使用した場合のmod名 | |
act_as | ActAs | 機能追加 | |
exclude_from_api | boolean | API生成から除外する | |
columns | Map<property, ColumnTypeOrDef> | カラム | |
relations | Map<property, RelDef> | リレーション | |
indexes | Map<property, IndexDef> | インデックス |
Inheritance
Properties
Type | Description | Required | |
---|---|---|---|
extends | string | 継承元 | Yes |
type | InheritanceType | 継承タイプ | Yes |
key_field | string | column_aggregationの場合のキーカラム | |
key_value | [boolean, number, string, integer] | column_aggregationの場合のキーの値 |
Inheritance Type
any of the following
simple
(単一テーブル継承 子テーブルのカラムも含めたすべてのカラムを親となるテーブルに格納する)concrete
(具象テーブル継承 子クラスごとに共通のカラムとそれぞれのモデルのカラムをすべて含んだ状態で独立したテーブルを作成する)column_aggregation
(カラム集約テーブル継承 単一テーブル継承と似ているが、型を特定するための _type カラムがある)
ActAs Definition
Properties
Type | Description | Required | |
---|---|---|---|
session | boolean | セッションDBとして使用 |
Column Type Or Def
any of the following
Column Def
Properties
Type | Description | Required | |
---|---|---|---|
title | string | ||
comment | string | ||
type | ColumnType | Yes | |
signed | boolean | 指定がない場合はunsigned | |
not_null | boolean | 指定がない場合はnullable | |
primary | boolean | ||
auto_increment | AutoIncrement | ||
length | integer | 長さ(文字列の場合はバイト数ではなく、文字数) | |
max | integer | 最大値(decimalは非対応) | |
min | integer | 最小値(decimalは非対応) | |
collate | string | ||
not_serializable | boolean | serializeに出力しない(パスワード等保護用) | |
precision | integer | ||
scale | integer | ||
time_zone | TimeZone | ||
enum_values | Array<EnumValue> | 列挙型の値 | |
db_enum_values | Array<DbEnumValue> | DBの列挙型を使用する場合の値 | |
enum_model | string | スキーマ内で定義された列挙値名 (名前は::区切り) | |
json_class | string | Json型で使用する型名 | |
exclude_from_cache | boolean | キャッシュからの除外設定 | |
skip_factory | boolean | factoryからの除外設定 | |
rename | string | カラム名の別名設定 | |
srid | integer | Point型のSRID | |
default | string | ||
sql_comment | string | ||
api_visibility | ApiVisibility | API可視性 | |
api_required | boolean | API入力時必須 |
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
Type | Description | Required | |
---|---|---|---|
name | string | Yes | |
title | string | ||
comment | string | ||
value | integer | 0~255の値 | Yes |
DB Enum Value
Properties
Type | Description | Required | |
---|---|---|---|
name | string | Yes | |
title | string | ||
comment | string |
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
Type | Description | Required | |
---|---|---|---|
title | string | ||
comment | string | ||
model | string | 結合先のモデル 他のグループは::区切りで指定 | |
type | RelationsType | ||
local | string | 結合するローカルのカラム名 | |
foreign | string | 結合先のカラム名 | |
in_cache | boolean | manyあるいはone_to_oneの場合にリレーション先も一緒にキャッシュするか 結合深さは1代のみで子テーブルは親に含んだ状態で更新する必要がある | |
raw_cond | string | リレーションを取得する際の追加条件 記述例:rel_group_model::Cond::Eq(rel_group_model::ColOne::value(1)) | |
order_by | string | ||
desc | boolean | ||
limit | integer | ||
use_cache | boolean | ||
use_cache_with_trashed | boolean | リレーション先が論理削除されていてもキャッシュを取得する | |
on_delete | ReferenceOption | DBの外部キー制約による削除およびソフトウェア側での削除制御 | |
on_update | ReferenceOption | DBの外部キー制約による更新 |
Relations Type
Allowed values
many
one
one_to_one
Reference Option
Allowed values
restrict
cascade
set_null
set_zero
Index Def
Properties
Type | Description | Required | |
---|---|---|---|
fields | Map<property, IndexFieldDef> | ||
type | IndexType | ||
parser | Parser |
Index Field Def
Properties
Type | Description | Required | |
---|---|---|---|
sorting | SortType | ||
length | integer |
Sort Type
Allowed values
asc
desc
Index Type
Allowed values
index
unique
fulltext
spatial
Parser
Allowed values
ngram
mecab
Enum Def
Properties
Type | Description | Required | |
---|---|---|---|
title | string | タイトル | |
comment | string | コメント | |
enum_values | Array<EnumValue> | 列挙値 | Yes |
mod_name | string | 列挙子の名前にマルチバイトを使用した場合のmod名 |