сделать слабые отношения, используя доктрину и Symfony - PullRequest
0 голосов
/ 12 сентября 2011

я пытаюсь сделать слабую связь между моим User столом и моим Confirmation столом, будучи Confirmation слабым User.Чтобы представить это, моя схема выглядит следующим образом:

User:
  actAs: [Timestampable]
  connection: doctrine
  tableName: User
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    username:
      type: string(50)
      notnull: true
    name:
      type: string(50)
      notnull: true
        .
        .
        .
  indexes:
    myindex1:
      fields:
        username:
          sorting: ASC
          length: 50
      type: unique
  relations:
    Confirmation:
      foreignType: one
  attributes:
    export: all
    validate: true

Confirmation:
  actAs: [Timestampable]
  connection: doctrine
  tableName: Confirmation
  columns:
    user_id:
      type: integer
      primary: true
    hash:
      type: string(64)
      notnull: true
  relations:
    User:
      local: user_id
      foreign: id
      type: one
      foreignType: one

При выполнении команды $ php symfony doctrine:build --all --no-confirmation я получил эту ошибку в выводе:

SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'id' doesn't exist in table. Failing Query: "CREATE TABLE Confirmation (user_id BIGINT, hash VARCHAR(64) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX id_idx (id), PRIMARY KEY(user_id)) ENGINE = INNODB". Failing Query: CREATE TABLE Confirmation (user_id BIGINT, hash VARCHAR(64) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX id_idx (id), PRIMARY KEY(user_id)) ENGINE = INNODB

так что, похоже, доктринагенерация индекса по полю, которое не было определено (id), как вы можете видеть в INDEX id_idx (id).Почему доктрина генерирует этот индекс?Как я могу смоделировать то, что я хочу?

Документация доктрины не очень обширна в вопросах взаимоотношений, любая ссылка на хороший сайт документации будет очень цениться ...

Заранее спасибо за любыепомогите !!!

1 Ответ

0 голосов
/ 19 ноября 2011

Насколько я знаю, Doctrine автоматически добавит столбец "id" по умолчанию для (всех) ваших таблиц.

Это поведение задокументировано несколько раз, и вы можете настроить этот столбец:

Но , извините, я не знаю, есть ли способ отключить эту функцию.

...