Как заставить или «намекнуть», что поле Entity должно быть проиндексировано в yaml? - PullRequest
3 голосов
/ 05 ноября 2011

Есть ли в Doctrine 2 способ намека на то, что столбец должен быть проиндексирован при автоматической генерации базы данных?У меня есть объект потока:

Entities\Thread:
  type: entity
  table: Thread
  repositoryClass: Repositories\ThreadRepository
  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 Ответ

1 голос
/ 16 февраля 2012

Я не смог найти документацию по этому вопросу в yaml, но после прочтения Doctrine\ORM\Mapping\ClassMetadatainfo я понял, что это выглядит следующим образом

Если вы хотите проиндексировать свое поле кода, ваше отображение yaml будет

Entities\Thread:
  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: Repositories\ThreadRepository
  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
...