Search code examples
cakephp-2.0cakedc

How to use ENUM in cake dc migrations?


By using cake-DC migration we can write migrations for string,integer can we used ENUM also ???


Solution

  • You can only use the data types that the database drivers of the CakePHP ORM support. Enum is not supported, use faked enum instead.

    See 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')
    )
    

    You could extend the Mysql source and add that type, but this will break cross-database compatibility of your app. But it is an unlikely case anyway.