1

私は symfony2 と doctrine にまったく慣れていませんが、最近、修正できないインデックスの問題に遭遇しました。

これが私のexperience.ymlです:

Test\PersoBundle\Entity\Experience:
type: entity
repositoryClass: Thibanir\PersoBundle\Repository\ExperienceRepository
table: experience
indexes:
    exp: 
        columns: [slug,company_id,begin_date,end_date,is_current]
        type: unique
id:
    id:
        type: integer
        generator: { strategy: AUTO }
fields:
    type:
        type: string
        length: 255
    begin_date:
        type: datetime
    end_date:
        type: datetime
        nullable: true
    is_current:
        type: boolean
        default: false
    title:
        type: string
        length: 255
    description:
        type: text
    slug:
        type: string
        length: 255
manyToOne:
    company:
        targetEntity: Company
        inversedBy: companies
        joinColumn:
            name: company_id
            referencedColumnName: id

mysqlで生成されたインデックスを見てみるとわかるのですが、UniqueフラグがFalse

インデックスの作成に関するドクトリンのドキュメントを見たとき、構文との唯一の違いは、キーワードFieldsandを逆にしたことColumnsです。このチュートリアルで学んだので、そうしました。

この構文に一致するように 2 つのキーワードを逆にしようとすると、次のようになります。

indexes:
    exp: 
        fields: [slug,company_id,begin_date,end_date,is_current]
        type: unique
id:
    id:
        type: integer
        generator: { strategy: AUTO }
columns:        
    type:
        type: string
        length: 255s:
    [...]

発行php app/console doctrine:schema:update --forceすると、次のエラーが表示されます。

[ErrorException]                                              
Notice: Undefined index: columns in /home/test/Project/perso/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php line 199  

ここに私の2つの質問があります:

  1. Doctrine のフィールドと列の違いは何ですか (私は彼らのウェブサイトで答えを見つけることができませんでした)?
  2. 複数の列に一意のインデックスを作成するにはどうすればよいですか?

助けてくれてどうもありがとう

4

1 に答える 1