Как вы переопределяете константу в моделях доктрины? - PullRequest
1 голос
/ 11 января 2010

В Doctrine вам предоставляется постоянная переменная, которая позволяет вам устанавливать столбец глобального идентификатора во всех моделях, которые генерируются кодом Doctrine. Я пытаюсь выяснить, как я могу переопределить / отключить это значение, чтобы оно не создавало этот столбец в определенной таблице.

Константа:

ATTR_DEFAULT_IDENTIFIER_OPTIONS

Он устанавливается в загрузочный файл PHP и автоматически создает соответствующую таблицу в вашей базе данных.

Пример кода:

// set the default primary key to be named 'id', integer, 4 bytes, Auto Increment = true
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
array('name' => 'id', 'type' => 'integer', 'length' => 4, 'autoincrement' => true));

Но что, если бы у меня была таблица / модель, для которой мне не нужен столбец "id"?

1 Ответ

3 голосов
/ 12 января 2010

Doctrine создаст этот столбец id, только если вы не указали другие столбцы в качестве первичного ключа.

Если, например, вы используете:

Example:
  tableName: examples
  columns:
    sometext: string(12)
    somedate: date(25)
    sometimestamp: timestamp(25)

Будет сгенерирован столбец с именем id в качестве первичного ключа, поскольку вы не установили никаких PK в схеме.

Но если вместо этого вы используете:

Example:
  tableName: example
  columns:
    someint:
      type: integer(10)
      primary: true
    sometext: string(12)
    somedate: date(25)
    sometimestamp: timestamp(25)

Пример secound не будет генерировать id, поэтому вам даже не нужно переопределять какие-либо константы. Это приводит к «проблеме», поскольку Doctrine заставляет вас иметь по крайней мере один первичный ключ на своих столах, так или иначе. Это только усиливает хорошую практику:)

...