2012-03-07 14 views
0

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

は、実際には以下のコードと同じくらい簡単です

質問:

oneToMany: 
    answer: 
    targetEntity: FsAnswer 
    mappedBy: question 
    cascade: ["persist"] 

回答:

manyToOne: 
    question: 
    targetEntity: FsQuestion 
    inversedBy: answer 
0

各回答には唯一の質問がありますか?あなたがoneToOneソートとして定義したという事実はこれを確認します。

あなたのjoinColumnの内容が乱雑になっているようです。驚いて、それはエラーを起こさなかった。

レビュー教義マニュアル内の例:

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/association-mapping.html

+0

そうですね、各回答には1つの質問しかありません。しかし、実際には外部キーワークには、私が望まないユニークなキーがあります。 – seferov

+0

もう一度、質問から回答へのOneToManyを確立しながら、OnetoOne関係を確立するよう教えています。ただ働かないでください。 OneToOneをManyToOneに変更し、joinColumnが正しく定義されていることを確認します。 – Cerad

関連する問題