pools.jp | Symfony schema.ymlの抽象表現


Symfony schema.ymlの抽象表現

PHPのWEBアプリケーションフレームワークSymfonyでORマッピングを実現するPropel。Ruby on Railsのmigrateと同じようにSymfonyではschema.ymlというファイルでモデルの項目を指定できます。

この表現を毎回調べている気がするのでschema.ymlでの指定可能な表現をpropel-build-schemaを実行して調べてみました。左のカラムがmysqlで指定した型、右のカラムはpropel-build-schemaタスクを実行した結果です。

mysql 抽象表現(schema.yml)
varchar VARCHAR
tinyint TINYINT
text LONGVARCHAR
date DATE
smallint SMALLINT
mediumint SMALLINT
int INTEGER
bigint BIGINT
float FLOAT
datetime TIMESTAMP
timestamp TIMESTAMP
time TIME
year INTEGER
char CHAR
tinybolb BINARY
tinytext VARCHAR
blob VARBINARY
mediumbob VARBINARY
mediumtext LONGVARCHAR
longblob VARBINARY
longtext LONGVARCHAR
enum CHAR
set CHAR
bool TINYINT
decimal DECIMAL

ちなみに生のschema.ymlは以下の通り。フィールド名は、”my_” + MySQLの型名です。
Symfony Bookに書いている指定方法よりちょっと冗長なのは一度xmlにしてからymlにしているからっぽい。

---
propel:
  sample:
    my_varchar:
      type: VARCHAR
    my_tinyint:
      type: TINYINT
    my_text:
      type: LONGVARCHAR
    my_date:
      type: DATE
    my_smallint:
      type: SMALLINT
    my_mediumint:
      type: SMALLINT
    my_int:
      type: INTEGER
    my_bigint:
      type: BIGINT
    my_float:
      type: FLOAT
    my_datetime:
      type: TIMESTAMP
    my_timestamp:
      type: TIMESTAMP
    my_time:
      type: TIME
    my_year:
      type: INTEGER
    my_char:
      type: CHAR
    my_tinybolb:
      type: BINARY
    my_tinytext:
      type: VARCHAR
    my_blob:
      type: VARBINARY
    my_mediumbob:
      type: VARBINARY
    my_mediumtext:
      type: LONGVARCHAR
    my_longblob:
      type: VARBINARY
    my_longtext:
      type: LONGVARCHAR
    my_enum:
      type: CHAR
    my_set:
      type: CHAR
    my_bool:
      type: TINYINT
      required: true
      default:
    my_decimal:
      type: DECIMAL
      size: 4
      scale: 3

Posted at Sunday, June 24th, 2007comment (0) | trackback | category: php, programming

Read More

Related Reading:


Leave a Reply

Note: Any comments are permitted only because the site owner is letting you post, and any comments will be removed for any reason at the absolute discretion of the site owner.