Несколько первичных ключей с Doctrine 1 и Symfony 1? - PullRequest
0 голосов
/ 16 августа 2011

Я уже знаю, что невозможно работать с несколькими первичными ключами в Symfony 1 и Doctrine 1, но знаете ли вы, ребята, какие-нибудь хорошие обходные пути?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

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

1 голос
/ 16 августа 2011

Помимо отношений «многие ко многим» доктрина1 не работает с первичным ключом для нескольких столбцов. Но если вы хотите использовать отношения «многие ко многим», используйте это так:

BlogPost:
  columns:
    user_id: integer
    title: string(255)
    body: clob
  relations:
    User:
      local: user_id
      foreign: id
      type: one
      foreignType: one
      foreignAlias: BlogPosts
    Tags:
      class: Tag
      foreignAlias: BlogPosts
      refClass: BlogPostTag
      local: blog_post_id
      foreign: tag_id

Tag:
  columns:
    name: string(255)

BlogPostTag:
  columns:
    blog_post_id:
      type: integer
      primary: true
    tag_id:
      type: integer
      primary: true
  relations:
    BlogPost:
      local: blog_post_id
      foreign: id
      foreignAlias: BlogPostTags
    Tag:
      local: tag_id
      foreign: id
      foreignAlias: BlogPostTags

Если вы НЕ хотите / должны использовать отношение «многие ко многим», лучше использовать уникальный ключ для нескольких столбцов.

...