2011-01-14 84 views
1

我想擁有I18N類別表。我跟着jobeet exampleSymfony doctrine i18n行爲數據加載失敗:違反完整性約束

下面的模式和燈具數據。

./symfony doctrine:build --db --all-classes --and-migrate 
./symfony doctrine:data-load data/fixtures/category.yml 

當運行這些命令沒有數據被插入到數據庫和紅色框失敗顯示:SQLSTATE [23000]:完整性約束違規:1062重複條目「1-ET」爲鍵「主要」該得到的數據加載任務執行

查詢(記錄與「mysqld的--log =日誌文件」):

1 Query DELETE FROM my_category 
2 Query START TRANSACTION 
3 Query SELECT k.id AS k__id, k.position AS k__position FROM my_category k ORDER BY k.position desc LIMIT 1 
4 Query INSERT INTO my_category (gender, position, created_at, updated_at) VALUES ('female', '1', '2011-01-14 12:33:05', '2011-01-14 12:33:05') 
5 Query SELECT k.id AS k__id, k.lang AS k__lang, k.slug AS k__slug FROM my_category_translation k WHERE (k.slug LIKE 'name-value%' AND k.lang = 'et' AND k.name = 'Name value') 
6 Query INSERT INTO my_category_translation (id, lang, name, seeking_label, seeking, slug) VALUES ('1', 'et', 'Name value', 'Label value', 'Value', 'name-value') 
7 Query SELECT k.id AS k__id, k.lang AS k__lang, k.slug AS k__slug FROM my_category_translation k WHERE (k.slug LIKE '%' AND k.lang = 'et_EE' AND k.name IS NULL) 
8 Query INSERT INTO my_category_translation (id, lang, slug) VALUES ('1', 'et_EE', '') 
9 Query rollback 
10 Quit 

當我手動運行這些命令在剛建成數據庫。從上面的3到6查詢運行良好並插入數據。 查詢號碼。 7不輸出數據和查詢nr。 8是失敗的。 (因爲ID 1已經存在,插入步驟6)。

該問題必須在查詢nr。 7.「k.lang ='et_EE'」我很確定它應該是'et'? 爲什麼要查詢nr。 7是必要的,看起來完全像查詢nr。 5但沒有和/或搞砸值?

我得到的是worng還是bug?

的schema.yml

 
myCategory: 
    actAs: 
    Timestampable: ~ 
    Sortable:  ~ 
    I18n: 
     fields:  [name, seeking_label, seeking] 
     actAs: 
     Sluggable: 
      fields: [name] 
      uniqueBy: [lang, name] 
      builder: [mySluggableTranslit, urlize] 
    columns: 
    name:   { type: string(255), notnull: true } 
    gender:  { type: string(6) } 
    seeking_label: { type: string(255) } 
    seeking:  { type: string(255) } 

數據/裝置/ category.yml

 
myCategory: 
    category-1: 
    gender: female 
    position: '1' 
    Translation: 
     et: 
     name: 'Name value' 
     seeking_label: 'Label value' 
     seeking: 'Value' 

回答

1

GOT溶液:可排序行爲不與的I18n充分混合。

如果您想從3天的調試中拯救自己,請不要混合使用 可排序的「csDoctrineActAsSortablePlugin」行爲與I18n行爲。

我現在就放棄可排序的支持。歡迎與I18n一起使用的可排序行爲的任何推薦。

0

這可以幫助一些新的學說探索者:用於標識I18n類的ID列應該被設置爲自動增量,但從來沒有唯一,因爲這個唯一的約束將被擴展到翻譯表,所以燈具不會被插入爲預期。

在例如:

Gender: 
    female: 
    Translation: 
     en: 
     short_name: F 
     name: Female 
     es: 
     short_name: F 
     name: Femenino 
    male: 
    Translation: 
     en: 
     short_name: M 
     name: Male 
     es: 
     short_name: M 
     name: Masculino 

如果兩性表(類)具有和id作爲自動增量,以及獨特的,這夾具插入會失敗。因此,不要在自動增量字段中使用唯一性,用作轉換表中的鍵(I18n行爲)。

相關問題