Pregunta

quiero aunque tienen mesa de categorías I18N. He seguido el jobeet ejemplo .

esquema y accesorios datos de más abajo.

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

Al ejecutar estos comandos no hay datos se inserta en la base de datos y el cuadro rojo con errores se mostrará: SQLSTATE [23000]: violación de integridad: 1062 Entrada duplicada '1-et' para la tecla 'primaria'

Las consultas que se ejecutan en la tarea de datos de carga (conectado con "mysqld --log = archivo de registro"):

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 

Al ejecutar manualmente estos comandos en la base de datos recién construido. Las consultas de 3 a 6 anteriores fina de ejecución y de inserción de datos. nr consulta. 7 Por qué los datos no salida y NR consulta. 8 es el que falla. (Debido ID 1 ya existe, insertado en el paso 6).

El problema debe estar en consulta nr. 7. "k.lang = 'et_EE'" Estoy bastante seguro de que debería ser 'y'? ¿Por consulta nr. 7 es neccessary parece exactamente igual nr consulta. 5 pero sin y / o en mal estado valores?

Lo que he conseguido worng o es un error?

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

data / fixtures / category.yml

myCategory:
  category-1:
    gender: female
    position: '1'
    Translation:
      et:
        name: 'Name value'
        seeking_label: 'Label value'
        seeking: 'Value'
¿Fue útil?

Solución 2

solución conseguida: Comportamiento Sortable no está mezclando bien con I18n.

Si quiere ahorrarse de 3 días de depuración entonces no se mezclan Sortable comportamiento "csDoctrineActAsSortablePlugin" con el comportamiento I18n.

Yo sólo dejará caer el apoyo se puede ordenar por ahora. Cualquier reccomendations para Sortable bahavior que funciona con I18n es bienvenido.

Otros consejos

Por defecto, la longitud del campo de la cultura en las tablas i18n es 2. Usted tiene que cambiarlo a 5 si desea utilizar los códigos de la cultura largos. De lo contrario, 'et_EE' se truncará a 'et'.

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

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

Esto podría ayudar a algunos de los nuevos exploradores Doctrina: columnas ID, que se utiliza para identificar las clases I18n debe establecerse como autoincrement pero nunca como único, debido a esta restricción única se ampliará a las tablas de traducción, por lo que aparatos no van a ser insertados como se esperaba .

En el ejemplo:

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

Si la tabla de Género (clase) tiene y el ID como autoincrement, y único, esta inserción accesorio fallaría. Así que no use único en campos autoincrement, utilizados como claves en las tablas de traducción (comportamiento I18n).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top