Propel PHP: объединение наследования конкретных таблиц и поведения i18n

Я пытаюсь использовать Propel 2 и комбинирую два поведения: наследование конкретной таблицы и перевод i18n. Например, у меня есть две сущности: сотрудник и директор.

Работник

отдел имени (i18n)

Директор расширяет Сотрудник

board_role (i18n)

Вот мой файл schema.xml:

<table name="employee">

    <column name="id" type="integer" primaryKey="true" autoIncrement="true" />
    <column name="name" type="varchar" />
    <column name="department" type="varchar" />

    <behavior name="i18n">
        <parameter name="i18n_columns" value="department" />
    </behavior>
</table>

<table name="director">

    <column name="board_role" type="varchar" />

    <behavior name="i18n">
        <parameter name="i18n_columns" value="board_role" />
    </behavior>

    <behavior name="concrete_inheritance">
        <parameter name="extends" value="employee" />
    </behavior>

</table>

Но вот таблицы MySQL, которые я получил после миграции:
работник:
- Я бы
- название
-descendent_class

employee_i18n:
- Я бы
- язык
- отдел

директор:
- Я бы
- название
- доска

Director_i18n:
- Я бы
- язык
- отдел

Первая проблема заключается в том, что поле board_role находится не в нужной таблице. Это переведенное свойство, поэтому оно должно быть в таблице "Director_i18n".

Затем я выполнил этот код:

$director = new Director();
$director->setName('Steve Jobs');

$director->setLocale('en_US');
$director->setDepartment('Management');
$director->setBoardRole('CEO');

// $director->save();                    // Doesn't change anything

$director->setLocale('fr_FR');
$director->setDepartment('Encadrement');
$director->setBoardRole('Président');

$director->save();

Таблица сотрудников заполнена правильно. Но employee_i18n остается пустым. Поле board_role только на французском языке, поскольку поле не находится в переведенной таблице. Тогда у меня есть 2 строки в таблице Director_i18N (FR и EN), но только с отделом.

Содержимое таблицы после выполнения сценария PHP:
работник:
- id: 1
- имя: Стив Джобс
- descendent_class: директор

employee_i18n:
пустой

директор:
- id: 1
- имя: Стив Джобс
- board_role: Президент

Director_i18n:
Строка 1:
- id: 1
- локаль: en_US
- отдел: управление

Строка 2:
- id: 1
- локаль: fr_FR
- отдел: Encadrement

Мой файл schema.xml неправильный? Или это проблема с Propel, когда мы пытаемся объединить два поведения, таких как i18n и наследование конкретных таблиц?

Спасибо за вашу помощь

0 ответов

Другие вопросы по тегам