Doctrineの回答テーブルと質問テーブルの間にOneToMany関係を作成しようとしています。これらは、基本的なYAMLスキーマですリレーショナルdoctrineで生成されたユニークキー
回答スキーマ
type: entity
table: fs_answer
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
questionId:
type: integer
unsigned: false
nullable: false
column: question_id
body:
type: text
nullable: false
oneToOne:
question:
targetEntity: FsQuestion
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
question_id:
referencedColumnName: id
orphanRemoval: false
lifecycleCallbacks: { }
質問スキーマ:
type: entity
table: fs_question
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
body:
type: text
nullable: false
oneToMany:
answer:
targetEntity: FsAnswer
cascade: { }
mappedBy: question
inversedBy: answers
joinColumns:
question_id:
referencedColumnName: id
orphanRemoval: false
lifecycleCallbacks: { }
私はdoctrine:schema:update
でスキーマを更新すると、それは以下のSQLコードを生成し、中に 'question_id' にを置きますテーブルに答えます。
CREATE TABLE IF NOT EXISTS `fs_answer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question_id` int(11) NOT NULL,
`body` longtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_552D082B1E27F6BF` (`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
どのようにこのユニークなキーのものを避けるには?論理的に(1対多)、回答テーブルには質問idのためのユニークなキーがあってはいけません。
そうですね、各回答には1つの質問しかありません。しかし、実際には外部キーワークには、私が望まないユニークなキーがあります。 – seferov
もう一度、質問から回答へのOneToManyを確立しながら、OnetoOne関係を確立するよう教えています。ただ働かないでください。 OneToOneをManyToOneに変更し、joinColumnが正しく定義されていることを確認します。 – Cerad