Intereting Posts
Тег HTML5 для отображения подсветки синтаксиса как сделать поле ввода даты больше или равно другому полю даты, используя валидацию в laravel Как безопасно и динамически создавать экземпляр существующего класса PHP? Доступ запрещен для пользователя при попытке соединения с PDO PHP-strip URL для получения имени тега Добавление водяного знака в видео с помощью ffmpeg в php WORDPRESS: отображение списка подкатегорий и сообщений, которые они содержат, в пределах одной основной категории Класс рефлексии PHP. Как получить значения свойств? Regex для имен со специальными символами (Unicode) Переменные переменные Superglobals Простой скрипт pagination PHP PHP Вызов неопределенной функции выберите *, который соответствует почтовому индексу пользователя в таблице mysql? PHP конвертирует XML в группу JSON, когда есть один ребенок Как автоматически изменить размер ячейки в fpdf, используя php

Как получить доктрину для генерации sql с типом BIGINT?

В моей схеме у меня есть несколько полей, которые должны быть 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?

Solutions Collecting From Web of "Как получить доктрину для генерации sql с типом BIGINT?"

С 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, и она больше не поддерживается.

С наилучшими пожеланиями.