【发布时间】:2026-02-06 12:45:02
【问题描述】:
就像*一样,Question和Tag之间是多对多的关系。
运行这些 symfony 命令后:
./symfony doctrine:drop-db
./symfony doctrine:build-db
./symfony doctrine:build-model
./symfony doctrine:build-sql
./symfony doctrine:insert-sql
使用以下架构:
schema.yml
Tag:
columns:
name:
type: string(10)
notnull: true
relations:
Questions:
class: Question
foreignAlias: Tags
refClass: QuestionTag
Question:
columns:
html:
type: string(1000)
relations:
Tags:
class: Tag
foreignAlias: Questions
refClass: QuestionTag
QuestionTag:
columns:
question_id:
type: integer
primary: true
tag_id:
type: integer
primary: true
relations:
Question:
class: Question
foreignAlias: QuestionTags
type: many
foreignType: one
Tag:
class: Tag
foreignAlias: QuestionTags
type: many
foreignType: one
在QuestionTag 链接表中,这有助于建立Tag 和Question 表之间的多对多关系,我发现Doctrine 只在tag_id 列上创建了一个“正常”索引。为什么在这个专栏上而不是在question_id 专栏上?我不知道。
我认为这很奇怪,因为 Doctrine 创建的索引应该在两个 question_id 和 tag_id 列上,因此它应该成为“唯一”索引,而不是“正常的'一,因为question_id和tag_id一起构成复合主键。
我的理解正确吗? 如果是,为什么 Doctrine 没有以正确的方式做到这一点?
【问题讨论】:
-
为什么不手动定义 PK 和索引?
标签: database database-design symfony1 doctrine