Как и в стеке, между Вопросом и Тегом существует отношение многие ко многим.
После запуска этих команд 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
, и поэтому он должен стать «уникальным» индексом, а не «нормальным» 'one, потому что question_id
и tag_id
вместе образуют составной первичный ключ.
Правильно ли мое понимание?
Если да, то почему Doctrine не делает это правильно?