0

Cake-DC 移行を使用することで、文字列、整数の移行を記述できます。ENUM も使用できますか???

4

2 に答える 2

0

私はちょうど2年遅れていますが、このリポジトリを見てください。移行で CakePHP でサポートされていないデータ型を使用するためのソリューションがあります。

代わりに使用するアプリケーションで CakeMigration を拡張するベース マイグレーションがあります。ENUM 型などのデータ型で名前が付けられた戦略を呼び出します。

https://github.com/leonardolessa/mywallet/blob/master/app/Lib/Migrations/BaseMigration.php

各戦略はインターフェースを実装します。

https://github.com/leonardolessa/mywallet/blob/master/app/Lib/Migrations/StrategyInterface.php

戦略自体ALTER TABLEは、サポートされていないタイプをテーブルに追加するために を実行するだけです。

https://github.com/leonardolessa/mywallet/blob/master/app/Lib/Migrations/EnumStrategy.php

サポートされていないタイプを使用したい場合は、うまくいかないことを忘れないでくださいcake bake

于 2015-05-01T20:40:20.553 に答える
-1

CakePHP ORM のデータベース ドライバーがサポートするデータ型のみを使用できます。列挙型はサポートされていません。代わりに偽の列挙型を使用してください。

http://api.cakephp.org/2.4/class-Mysql.html# $columnsを参照してください

array(
    'primary_key' => array('name' => 'NOT NULL AUTO_INCREMENT'),
    'string' => array('name' => 'varchar', 'limit' => '255'),
    'text' => array('name' => 'text'),
    'biginteger' => array('name' => 'bigint', 'limit' => '20'),
    'integer' => array('name' => 'int', 'limit' => '11', 'formatter' => 'intval'),
    'float' => array('name' => 'float', 'formatter' => 'floatval'),
    'datetime' => array('name' => 'datetime', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
    'timestamp' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
    'time' => array('name' => 'time', 'format' => 'H:i:s', 'formatter' => 'date'),
    'date' => array('name' => 'date', 'format' => 'Y-m-d', 'formatter' => 'date'),
    'binary' => array('name' => 'blob'),
    'boolean' => array('name' => 'tinyint', 'limit' => '1')
)

Mysql ソースを拡張してそのタイプを追加することもできますが、これによりアプリのデータベース間の互換性が失われます。しかし、とにかくそれはありそうもないケースです。

于 2013-12-07T19:30:13.050 に答える