Domanda

Voglio tho avere tabella categorie I18N. Ho seguito il jobeet esempio .

schema e le fixture dei dati sottostanti.

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

Quando eseguo questi comandi non dati vengono inseriti nel database e casella rossa con display guasto: SQLSTATE [23000]: Integrità violazione del vincolo: 1.062 voce duplicata '1-et' per la chiave 'primaria'

Le query che vengono eseguiti sul compito data-load (registrato con "mysqld --log = file di 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 

Quando eseguo manualmente questi comandi sulla base di dati appena costruiti. Le query da 3 a 6 di cui sopra bella corsa e inserire i dati. nr Query. 7 fa dati non uscita e interrogazione nr. 8 è quello malfunzionante. (Poiché id 1 esiste già, inserito nel passaggio 6).

Il problema deve essere nella query nr. 7. "k.lang = 'et_EE'" Sono abbastanza sicuro che dovrebbe essere 'et'? Perché interrogazione nr. 7 è neccessary sembra esattamente come interrogazione n. 5 ma senza e / o incasinato valori?

Quello che ho ottenuto worng o è un 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) }

data / fixtures / category.yml

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

Soluzione 2

soluzione Got: comportamento ordinabili non si mescola bene con I18n.

Se si vuole salvare se stessi da 3 giorni di debug, allora non si mescolano Ordinabile comportamento "csDoctrineActAsSortablePlugin" con un comportamento I18n.

mi limiterò a drop ordinabili per ora. Eventuali RACCOMANDAZIONI PER ordinabili bahavior che funziona con I18n è il benvenuto.

Altri suggerimenti

Per impostazione predefinita, la lunghezza del campo della cultura nelle tabelle i18n è 2. Devi cambiare a 5 se si desidera utilizzare i codici della cultura lunghi. In caso contrario, 'et_EE' verrà troncato a 'et'.

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

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

Questo potrebbe aiutare alcuni nuovi esploratori Doctrine: colonne ID, usati per identificare le classi I18n deve essere impostato come auto-incremento, ma mai come unico, perché questo vincolo unico sarà esteso alle tabelle di conversione, quindi non verranno inserite infissi come previsto .

Nel esempio:

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

Se la tabella di genere (classe) ha e id come AutoIncrement, e unico, questo inserimento apparecchio fallirebbe. Quindi non utilizzare unico in campi autoincremento, usati come chiavi in ??tabelle di conversione (comportamento I18n).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top