我想要有I18N类别表。我遵循了 JobEet示例.

模式和固定数据以下数据。

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

当我运行这些命令时 SQLSTATE [23000]:违反完整性约束:1062重复条目'1-ET'key'Primary'

在数据加载任务上执行的查询(使用“ mysqld -log = logfile”登录):

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的查询运行良好并插入数据。查询nr。 7不输出数据并查询NR。 8是失败的。 (因为ID 1已经存在,因此已插入步骤6)。

问题必须是在查询NR中。 7.“ k.lang ='et_ee'”我很确定应该是'et'吗?为什么查询nr。 7是NECESSARY似乎完全像查询NR。 5但是没有和/或混乱的值?

我遇到的东西还是一个错误?

模式

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) }

数据/固定装置/类别.yml

myCategory:
  category-1:
    gender: female
    position: '1'
    Translation:
      et:
        name: 'Name value'
        seeking_label: 'Label value'
        seeking: 'Value'
有帮助吗?

解决方案 2

获得解决方案:可排序行为与I18N的混合不佳。

如果您想从3天的调试中保存自己,请不要将可排序的“ Csdoctrineactassortableplugin”行为与I18N的行为混合在一起。

我现在就放弃可排序的支持。欢迎对与I18N合作的可排序的巴哈维尔的任何建议。

其他提示

默认情况下,I18N表中的文化领域的Lenght为2。如果您想使用长文化代码,则必须将其更改为5。否则,“ ET_EE”将被截断为“ ET”。

I18n:
  fields:       [name, seeking_label, seeking]
  length: 5

看: http://www.doctrine-project.org/documentation/manual/1_0/en/behaviors#core-behaviors:i18n

这可以帮助一些新的学说探索者:用于识别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行为)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top