私は 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
インデックスの作成に関するドクトリンのドキュメントを見たとき、構文との唯一の違いは、キーワードFields
andを逆にしたこと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つの質問があります:
- Doctrine のフィールドと列の違いは何ですか (私は彼らのウェブサイトで答えを見つけることができませんでした)?
- 複数の列に一意のインデックスを作成するにはどうすればよいですか?
助けてくれてどうもありがとう