#doctrine #doctrine-orm #yaml
#доктрина #доктрина-orm #yaml
Вопрос:
Есть ли в Doctrine 2 какой-либо способ намекнуть, что столбец должен быть проиндексирован при автоматическом создании базы данных? У меня есть объект потока:
EntitiesThread:
type: entity
table: Thread
repositoryClass: RepositoriesThreadRepository
id:
id:
type: integer
generator:
strategy: AUTO
fields:
type:
type: enumthreadtype
code:
type: string
length: 10
nullable: true
manyToOne:
group:
targetEntity: Group
inversedBy: threads
oneToMany:
messages:
targetEntity: Message
mappedBy: thread
attachments:
targetEntity: ThreadAttachment
mappedBy: thread
Потоки часто ищутся по их «коду» — случайной строке из 10 символов — а не по их идентификатору. Есть ли какой-либо способ указать, что индекс должен быть создан с использованием yaml, или мне просто нужно сделать это в моей базе данных после создания таблицы?
Ответ №1:
Я не смог найти документацию для этого в yaml, но после прочтения DoctrineORMMappingClassMetadatainfo
я понял, что это выглядит следующим образом
Если бы вы хотели проиндексировать свое кодовое поле, ваше сопоставление yaml было бы следующим
EntitiesThread:
type: entity
table: Thread
indexes:
# _idx as suffix...
thread_code_idx:
columns: [ code ]
# We can specify multiple indexes
another_idx
# we can specify multiple columns for compound indexes
columns [ type, code ]
repositoryClass: RepositoriesThreadRepository
id:
id:
type: integer
generator:
strategy: AUTO
fields:
type:
type: enumthreadtype
code:
type: string
length: 10
nullable: true
manyToOne:
group:
targetEntity: Group
inversedBy: threads
oneToMany:
messages:
targetEntity: Message
mappedBy: thread
attachments:
targetEntity: ThreadAttachment
mappedBy: thread