Frage

Ich möchte tho L18N Kategorien Tisch. Ich habe die jobeet Beispiel gefolgt.

Schema und Vorrichtungen Daten unten.

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

Wenn ich ausführen, um diese Befehle keine Daten in der Datenbank und rote Box mit Ausfall angezeigt eingefügt werden: SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1062 doppelten Eintrag ‚1-et‘ für Schlüssel ‚primärer‘

Abfragen, die auf Daten Last Aufgabe ausgeführt werden soll (angemeldet mit "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 

Wenn ich manuell diese Befehle auf frisch gebaute Datenbank. Abfragen von 3 bis 6 oben Lauf fein und Einsatzdaten. Abfrage nr. 7 nicht Ausgangsdaten und Abfrage nr. 8 ist das Versagen ein. (Weil ID 1 bereits vorhanden ist, eingefügt in Schritt 6).

Das Problem in Abfrage nr sein muss. 7. „k.lang =‚et_EE‘“ Ich bin ziemlich sicher, sollte es ‚et‘ sein? Warum Abfrage nr. 7 ist notwendig, scheint genau wie Abfrage nr. aber 5 ohne und / oder verkorkste Werte?

Was ich worng bekommen oder ist es ein 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) }

Daten / Einrichtung / category.yml

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

Lösung 2

Got Lösung: Sortable Verhalten ist nicht gut mit I18n mischen.

Wenn Sie sich selbst ab 3 Tage speichern möchten dann das Debuggen nicht mischen Sortierbar „csDoctrineActAsSortablePlugin“ Verhalten mit I18n Verhalten.

Ich werde einfach sortierbar Unterstützung für jetzt fallen. Etwaige reccomendations für Sortable bahavior, dass die Arbeiten mit I18n ist willkommen.

Andere Tipps

In der Standardeinstellung ist die Länge des Kultur Feldes in i18n Tabellen 2. Sie müssen es 5 ändern, wenn Sie lange Kultur-Codes verwenden möchten. Andernfalls wird 'et_EE' auf 'et' abgeschnitten.

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

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

Dies könnte ein paar neue Lehre Forschern helfen: ID-Spalten, verwendeten I18n Klassen zu identifizieren, sollten als autoincrement festgelegt werden, aber nie als einzigartig, weil diese eindeutige Einschränkung wird auf die Übersetzungstabellen erweitert werden, so Geräte werden nicht wie erwartet eingefügt werden .

Beispiel:

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

Wenn das Geschlecht Tabelle (Klasse) hat und id wie Autoinkrement und einzigartig, diese Befestigungseinführöffnung fehlschlagen würde. Also nicht einzigartig verwendet in autoincrement Feldern, die als Schlüssel in Übersetzungstabellen (I18n Verhalten).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top