Сохраняющиеся ценностные объекты в Typo3 - PullRequest
0 голосов
/ 18 января 2019

У меня есть класс Money, который расширяет AbstractValueObject со свойствами $amount (int) и $currency (string). И у меня есть AbstractEntity со свойством $price, содержащим экземпляр Money. Как мне заставить Typo3 сохранить этот объект значения? Как мне определить отображение?

Исходя из Доктрины, я ожидаю, что оно будет сохраняться в двух столбцах price_amount и price_currency.

1 Ответ

0 голосов
/ 20 января 2019

Extbase работает немного по-другому - поэтому объекты значений должны храниться в их собственных таблицах, а отношения между объектами сохраняются с использованием идентификаторов точно так же, как и объекты.
Единственное реальное различие между сущностями и виртуальными организациями заключается в том, что диспетчер постоянства будет использовать property values (кроме поля идентификатора) при поиске виртуальных организаций для персистентности, тогда как identifier будет использоваться в сущностях.

  • Таким образом, вам нужно добавить схему базы данных для объекта значения в ext_tables.sql, и, поскольку таблица должна содержать автоматически увеличивающееся поле uid, а также поля, необходимые для вашего VO. Убедитесь, что вы создали объединенный уникальный индекс для столбцов amount и currency.
  • Определите сопоставление TCA, и затем вы можете сохранить объекты-значения напрямую, если создадите репозиторий или прикрепите их для агрегации корневых объектов и сохраните их.

Свойство price вашей сущности должно быть целым числом в схеме базы данных, так как extbase будет либо хранить ссылку на UID VO (если вы ссылаетесь только на один объект Money на вашей сущности), и если вы хотите Для хранения коллекции объектов Money, Extbase будет хранить количество отношений между вашим объектом и объектами Money.

...