使用Doctrine 1和Symfony 1的多个主键?

时间:2011-08-15 20:43:46

标签: php symfony1 doctrine

我已经知道在Symfony 1和Doctrine 1中使用多个主键是不可能的,但是你们知道有什么好的解决方法吗?

2 个答案:

答案 0 :(得分:1)

一个常见的解决方法是将auto_increment键添加到多对多解析程序表中,而不是定义关系,只需为表创建标准外键关系。只要你在两列上有一个索引,性能就可以了。

答案 1 :(得分:0)

除了多对多关系之外,doctrine1对多个列的主键不起作用。但是如果你想使用多对多关系,请使用它:

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

如果您不想/必须使用多对多关系,最好在多列上使用唯一键。