Что такое ValueObject в приложении Doctrine с переводами?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Что такое ValueObject в приложении Doctrine с переводами?

Сообщение Anonymous »


У меня есть структура таблицы:


Изображение


Страница может иметь множество заголовков с разными переводами. В Symfony:

Model/Page.php — объект главной страницы

Model/Page/PageFieldTitle.php — сущность для таблицы page_field_title.

Меня больше всего беспокоит, что здесь представляет собой объект значения для заголовка? Есть несколько концепций:
[*]Название — первое, а языковой стандарт — второе. Оба объекта значений используются в сущности PageFieldTitle. [*]Title — один, Locale — второй, и должен быть третий: TitleLocalized, который будет использовать объекты значений Title и Locale. TitleLocalized будет использоваться в сущности PageFieldTitle. [*]Должны быть Locale и TitleLocalized. TitleLocalized должен содержать внутри Locale и строку. TitleLocalized будет использоваться в сущности PageFieldTitle. 1 — отдельные объекты значений
Реализация этого сценария получена.

класс PageFieldTitle { используйте PageFieldTrait; #[ORM\Embedded(префикс столбца: false)] защищенный заголовок страницы $value; // объект значения публичная функция __construct (PageTitle $value, Locale $locale) { $this->setValue($value); $this->setLocale($locale); } публичная функция getValue(): PageTitle { вернуть $this->значение; } общедоступная функция setValue(PageTitle $value): PageFieldTitle { $это->значение = $значение; вернуть $это; } } черта, чтобы я мог легко создавать больше полей:

trait PageFieldTrait { #[ОРМ\Идентификатор] #[ORM\ManyToOne(targetEntity: Page::class)] #[ORM\JoinColumn(name: 'page_id', referencedColumnName: 'id')] защищенная страница $page; // объект главной страницы #[ORM\Embedded(префикс столбца: false)] защищенная локаль $locale; // объект значения публичная функция getLocale(): Локаль { вернуть $this->локаль; } общедоступная функция setLocale(Locale $locale): self { $this->locale = $locale; вернуть $это; } общедоступная функция setPage(Page $page): self { $this->page = $page; вернуть $это; } } В сущности Page есть связь ManyToOne, и она работает нормально.
2 и 3
Реализация также возможна, протестирована, и я могу использовать встроенные объекты внутри встроенных объектов с помощью доктрины. Так что каждый подход выглядит хорошо.
Вопросы [*]Какой подход лучше и почему? [*]Есть ли возможность избежать использования Model/Page/PageFieldTitle.php, который предназначен только для хранения объекта значения? Для этого нелегко работать с отношением OneToMany.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»