Добавлю шума :) Вопрос кто юзает command/handler. Как обрабатываете

крудовые сценарии, где nullable поля?
Например кейс: юзер может установить "пол", "о себе", "отчество". Чисто по логике никто не мешает эти данные заполнять в какой угодно комбинаторике (т.е. что-то с фронта отослать, а что-то нет). Не вижу смысла создавать несколько юзкейсов, проще один EditProfile с сеттерами
$user->setGender($command->gender);
$user->setInfo($command->info);
$user->setPatronymic($command->patronymic);
Проблема: если фронт зашлет только "пол", то затрутся остальные поля. Заставлять фронт слать что-то лишнее (т.е. всегда три поля) - ну такое себе. Я делал, что если null - то вообще ничего не делается, а если фронт хочет стереть - от пусть шлет пустую строку. Работает - но выглядит стремненько. Плюс это не сработает с int, выходит надо делать mixed/union type: string|int.
Как вы такие кейсы решаете?

14 ответов

20 просмотров

а почему эту лабуду в json не засунуть? зачем мест ов строках занимаь? ну и сеттеры — коммон, в пхп 7.4 ввели тайпед проперти, я для такого круда юзаю public и мне норм (серьезно) а там, где критично контролирвоать переходы состояния — там нет и геттеров даже, не то что сеттеров

Павел-Г. Автор вопроса
Максим Федоров
а почему эту лабуду в json не засунуть? зачем мест...

Не нормализованно как-то ) И даже если так, как это поможет? Мержить array - прощай спецификация. Да, один из самый интересных путей - тупо засериализовать на объект, но тогда в комманде не будет понятных аргументов

С таким конфигом, нужно перед гидрацией входящих данных предварительно заполнять ДТО текущими данными. Дальше их затирает уже фронт тем, что прислал.

Павел Г.
Не нормализованно как-то ) И даже если так, как эт...

ну пусть будет простая структура с полями, ее в JSON и забыли

Павел-Г. Автор вопроса
Oleg Okwinza
С таким конфигом, нужно перед гидрацией входящих д...

Т.е. доставать сущность, мапить на дто, потом мержить данные? Ну чет такое себе... причем на этапе контроллера

Павел-Г. Автор вопроса
Максим Федоров
ну пусть будет простая структура с полями, ее в JS...

Просто эта страуктура не будет описана, вот в чем проблема

Павел Г.
Т.е. доставать сущность, мапить на дто, потом мерж...

SELECT NEW UpdateAddressRequest Можно прямо средствами DQL

Павел-Г. Автор вопроса
Максим Федоров
так опиши объектом, а не массивом

Так вот у меня есть объект с nullable проперти. Как мне понять - они null потому что их фронт не прислал, или null потому что он специально прислал ?)

Павел-Г. Автор вопроса
Oleg Okwinza
SELECT NEW UpdateAddressRequest Можно прямо средст...

Все равно это на уровне контроллера.

Павел Г.
Все равно это на уровне контроллера.

Можно вынести на уровень ArgumentResolver

Павел Г.
Т.е. доставать сущность, мапить на дто, потом мерж...

В ApiPlatform схожий принцип, разница лишь в том, что там он зарыт где-то в кишках

Павел-Г. Автор вопроса
Oleg Okwinza
В ApiPlatform схожий принцип, разница лишь в том, ...

Верно, хотелось бы именно это, у них это через сериализатор и массив

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
🙋 Ребята, всем привет. Поправил задачу: Нужно каждому новому сообщению (1 раз по каждому юзеру) в чате прибавлять снизу кнопку с предложением подписаться на канал. Как добавит...
Alexander
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Карта сайта