Подскажите, пожалуйста кто разбирается в паттернах ситуация: Надо работать с комментариями. Создавать

комментарии по АПИ, отдавать по АПИ
для того чтобы создать комментарий, нужен только текст комментария, и id того, что комментируем, 2 поля.
Для этого создал модель
CommentNew {
text;
commentable;
}
После того как был создан комментарий, я хочу вернуть информацию о нем. Она содержит уже больше полей.
CommentView {
text;
commentable;
id;
author: UserObject;
time;
files: LinksList;
}
При этом есть сущность Comment, которая имеет почти все поля, что и CommentView, но знает только о связанных файлв а не о сгенерированных ссылках.

Получается под один объект выделено 3 класса.

Для того чтобы отдать на клиент CommentView я должен Comment преобразовать в CommentView (со своей логикой). Для того чтобы создать - должен CommentNew преобразовать в Comment (со своей логикой)

Вопросы:
1. Это норм?
2. Как норм если это не
3. Какой паттерн (можно с примером) использовать для "преобразования" одного объекта в другой.

2 ответов

4 просмотра

твой CommentNew это ДТО, из него ты создаешь сущность Comment, чтобы вернуть её ты используешь "трансформер" CommentView с преобразованиями, вроде это норм практика

Александр- Автор вопроса

@fes0r а гуру имеют мнение на этот счёт? Или желание помочь

Похожие вопросы

Обсуждают сегодня

Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Всем привет! Напишите пожалуйста, кто мог бы оффлайн преподавать некоторые курсы по Odoo в Алматы в одном из ВУЗов? Мы сейчас вместе с Odoo запускаем университетскую программу...
Adil Dauletkhan
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
А как заставить поиск искать? Есть такая формочка <select class="form-control custom-select" name="brand_id" data-handler="onGetBrands"></select>
Денис Александрович
5
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
Карта сайта