2016-09-06 2 views
1

を教義は、それが見つけることができないと言います関係machine_table_for_base_modelSQLSTATE[42P01]: Undefined table: 7 ERROR: the relation "machine_table_for_base_model" does not existです。なぜこれが起こるのですか?Doctrine2多対多の関係:「SQLSTATE [42P01]:不定表:7 ERROR:リレーションが存在しません」私はINNERが(<strong>多対多</strong>関係で接続された)2つのエンティティ間の結合を作るとき

私は次のように定義されたassociative tableを持っている:私はそのような何か持って、関連するテーブルの教義マッピング実行すると

<!-- language: lang-sql --> 

CREATE TABLE machine_table_for_base_model ( 
    id_machine_table integer NOT NULL, 
    id_base_model integer NOT NULL, 
); 

ALTER TABLE ONLY machine_table_for_base_model 
    ADD CONSTRAINT machine_table_for_base_model_pkey PRIMARY KEY (id_machine_table, id_base_model); 

ALTER TABLE ONLY machine_table_for_base_model 
    ADD CONSTRAINT machine_table_for_base_model_ibfk_1 FOREIGN KEY (id_machine_table) REFERENCES machine_table(id) ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED; 

ALTER TABLE ONLY machine_table_for_base_model 
    ADD CONSTRAINT machine_table_for_base_model_ibfk_2 FOREIGN KEY (id_base_model) REFERENCES base_model(id) ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED; 

:最後に

Package\MyBundle\Entity\MachineTable: 
    type: entity 
    schema: techguide 
    table: machine_table 
    indexes: 
     IDX_8386B61E3C5569AA: 
      columns: 
       - edit_user 
    id: 
     id: 
      type: integer 
      nullable: false 
      options: 
       unsigned: false 
      id: true 
      generator: 
       strategy: SEQUENCE 
    fields: 
     description: 
      type: string 
      nullable: false 
      length: 200 
      options: 
       fixed: false 
     labelsDimensions: 
      type: text 
      nullable: false 
      length: null 
      options: 
       fixed: false 
      column: labels_dimensions 
     editDate: 
      type: datetime 
      nullable: false 
      options: 
       default: now 
      column: edit_date 
    manyToOne: 
     editUser: 
      targetEntity: Package\SupportBundle\Entity\Account 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       edit_user: 
        referencedColumnName: id 
      orphanRemoval: false 
    manyToMany: 
     idBaseModel: 
      targetEntity: BaseModel 
      cascade: { } 
      fetch: LAZY 
      mappedBy: null 
      inversedBy: idMachineTable 
      joinTable: 
       name: machine_table_for_base_model 
       joinColumns: 
        - 
         name: id_machine_table 
         referencedColumnName: id 
       inverseJoinColumns: 
        - 
         name: id_base_model 
         referencedColumnName: id 
      orderBy: null 
    lifecycleCallbacks: { } 

答えて

0

を私はこれに対する解決策を見つけました問題。あなたがPostgresが連想テーブルが属するスキーマ、追加して、私の場合、YAMLファイルでORMの設定、上(手動)編集するjoinTable名を必要とする:

Entity.orm.yml

manyToMany: 
    idBaseModel: 
     targetEntity: BaseModel 
     cascade: { } 
     fetch: LAZY 
     mappedBy: null 
     inversedBy: idMachineTable 
     joinTable: 
      name: <NAME_OF_YOUR_SCHEMA>.<NAME_OF_THE_TABLE> 
      joinColumns: 
       - 
        name: id_machine_table 
        referencedColumnName: id 
      inverseJoinColumns: 
       - 
        name: id_base_model 
        referencedColumnName: id 
     orderBy: null 
lifecycleCallbacks: { }