Каков синтаксис для «опций» в Doctrine 2.1 @Column annotation?

#doctrine #doctrine-orm

#доктрина #doctrine-orm

Вопрос:

Я пытаюсь определить столбец в Doctrine 2.1 (используя аннотации), который сопоставляется с столбцом символов фиксированной длины в MySQL. Использование fixed=true не выполняет эту работу. Аннотация

 * @ORMColumn(type="string", length=49, fixed=true, nullable=false)
  

это приводит к ошибке: «Аннотация @ORMColumn, объявленная в свойстве [name here], не имеет свойства с именем «исправлено». Доступные свойства: имя, тип, длина, точность, масштаб, уникальный, обнуляемый, параметры, определение столбца «. Итак, я предполагаю, что «фиксированный» бит должен быть передан в «options». Но как? Я просмотрел документацию Doctrine 2.1 и ничего не могу найти по этому поводу.

Я пытался

 * @ORMColumn(type="string", length=49, options="fixed=true", nullable=false)
  

что не приводит к ошибке, но игнорируется — созданный столбец — VARCHAR (49) .

Я бы предпочел не использовать ColumnDefinition .

Есть предложения?

Спасибо

Ответ №1:

Правильный синтаксис таков:

 @ORMColumn(type="string", length=49, options={"fixed":true}, nullable=false)
  

Комментарии:

1. Кто-нибудь, скажите мне, почему это такая секретная информация для поиска. Вопрос двухлетней давности … именно тогда, когда мне нужна была информация, Бог послал сюда Патрика всего 16 часов назад, чтобы поделиться этим со мной! Спасибо!

Ответ №2:

Для добавления ФИКСИРОВАННОГО типа данных в ваши аннотации потребуется определяемая пользователем функция в Doctrine. Документация о том, как их настроить, довольно удобочитаема.

В репозитории DoctrineExtensions Бенджамина Эберлея также есть библиотека функций запросов MySQL, которые могут оказаться полезными для расширения собственных возможностей Doctrine для адаптации специфичных для MySQL функций.

К сожалению, он не включает тип данных, который вы ищете, но он может быть полезен в качестве модели для настройки того, что вам нужно. Удачи и, пожалуйста, напишите, если вы найдете решение, которое работает для вас.