В моей схеме у меня есть несколько полей, которые должны быть BIGINT. Я использую symfony's
symfony doctrine:build-sql
для создания моей базы данных.
Поля всегда выходят как тип int.
Я пробовал следующие типы в схеме:
int {type: integer, notnull: true} {type: integer(5), notnull: true} {type: bigint, notnull: true}
Ни один из них, похоже, не работает (я всегда перестраиваю модель перед построением SQL).
Какой тип я должен ввести в schema.yml?
С Symfony 2.x (например, Doctrine 2.4.1) и аннотациями PHP на Entities использование @ORM\Column(name="id", type="bigint")
приводит к MySQL bigint(20)
.
NB: OP отметил этот вопрос с помощью symfony1 & doctrine1, для которого это решение не будет работать .
Это зависит от вашей РСУБД, но если вы используете MySQL, вы можете прочитать lib / plugins / sfDoctrinePlugin / lib / vendor / doctrine / Doctrine / DataDict / Mysql.php
case 'integer': case 'int': if ( ! empty($field['length'])) { $length = $field['length']; if ($length <= 1) { return 'TINYINT'; } elseif ($length == 2) { return 'SMALLINT'; } elseif ($length == 3) { return 'MEDIUMINT'; } elseif ($length == 4) { return 'INT'; } elseif ($length > 4) { return 'BIGINT'; } } return 'INT';
поэтому ваша вторая попытка должна была сработать … или вы используете другую СУБД? Вы должны установить точку останова на этой строке кода и поэтапную отладку, это странно. Кроме того, проверьте содержимое файла Mysql.php, чтобы узнать, есть ли у вас то же самое, что и я (я использую доктрину, поставляемую с sf 1.4.11)
да, целое число (5) должно выполнить эту работу.
Вы можете проверить другие типы данных схемы в книге Symfony и Doctrine , но имейте в виду, что это версия 1.2, и она больше не поддерживается.
С наилучшими пожеланиями.