Как сохранить перевод в другой таблице, используя Doctrine 2 + Gedmo Translatable - PullRequest
3 голосов
/ 03 октября 2011

Используя инструкции на https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#advanced-examples таблицу можно разделить, чтобы сохранить переводы в другой таблице. Результирующая структура таблицы:

(пример А)

 Article             ArticleTranslation
+--------------+    +----------------------+
| id           |    | id                   |
+--------------+    +----------------------+
| title        |    | locale               |
+--------------+    +----------------------+
| content      |    | objectclass          |
+--------------+    +----------------------+
| online       |    | foreign_key          |
+--------------+    +----------------------+
                    | field                |
                    +----------------------+

На мой взгляд, есть две проблемы с использованием этого стандартного подхода: 1. переведенная сущность сохраняется в нескольких записях (по одной на поле) в таблице перевода 2. Оригинальная запись также должна быть в переведенной таблице.

Возможно ли с Doctrine + Gedmo Transhable сохранять переводы так:

(пример Б)

 Article             ArticleTranslation
+--------------+    +----------------------+
| id           |    | id                   |
+--------------+    +----------------------+
| online       |    | foreign_key          |
+--------------+    +----------------------+
                    | locale               |
                    +----------------------+
                    | title                |
                    +----------------------+
                    | content              |
                    +----------------------+

Таким образом, непереведенные поля должны быть в таблице Article, переведенные поля - в таблице ArticleTranslation с одной записью на переведенную статью.

Как этого достичь?

1 Ответ

2 голосов
/ 04 октября 2011

используя текущую архитектуру, он сохраняет запись по полю в таблице перевода. В общем, это было сделано таким образом, чтобы избежать проблем с синхронизацией, если вы добавляете или удаляете переводимые поля из ваших сущностей. Реализация вашего метода привела бы к появлению дополнительной команды миграции схемы специально для расширения или к некоторому волшебному отображению в фоновом режиме. Чтобы избежать путаницы, единственное, что запланировано для обновления, - это исходное хранилище перевода записей как запасной вариант локали по умолчанию, без записи в таблице перевода. Я понимаю, что в сложных случаях это не то, что вы бы сделали, а поведение большинства пользователей, которые хотят, чтобы его конфигурирование было как можно более простым. А что касается переводов коллекций, вы можете использовать подсказку запроса Это поведение никогда не будет охватывать 99% случаев использования, как SF2, чтобы сохранить простоту

...