Как использовать ENUM в переносе тортов?

С помощью переноса торт-DC мы можем написать перенос для строки, целое число, мы можем использовать ENUM также???

2 ответа

Решение

Вы можете использовать только те типы данных, которые поддерживаются драйверами базы данных CakePHP ORM. Enum не поддерживается, вместо этого используйте поддельное enum.

Смотрите http://api.cakephp.org/2.4/class-Mysql.html$ столбцы

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 и добавить этот тип, но это нарушит совместимость базы данных вашего приложения. Но это все равно маловероятный случай.

Я опоздал всего на два года, но взгляните на этот репозиторий. Существует решение для использования любых типов данных, не поддерживаемых для 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 у тебя будет плохое время

Другие вопросы по тегам