2011-01-14 32 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行为)。

相关问题