Павел
Опять же если какая нить инмемори и надо потестить что то неплохо - тоже можно встрять
Павел
Но это скорее редкие кейсы
Павел
Воркера уронил 14.7 занято :)
Dmitriy
это скорее вопрос к тому - а почему для работы у тебя подымается 20 воркеров, возможно локальное докер окружение настроено не оптимально
Павел
Павел
Что впритык к 16
Павел
Другое дело что при 16 будет выгружать более резво я думаю
Dmitriy
локально можно многими вещами пренебречь и запускать отработку нужных месседжей руками
Павел
Неиспользуемое
Dmitriy
ага запустил весь проект локально в кубере )
Павел
Dmitriy
опять же своп = оперативка * 2, ставишь м2 и пофиг
Dmitriy
ну ты его сильно не посадишь, если постоянно не перезапускажешь контейнеры
Павел
Ну короче имхо, 16 да, еще более комфортно, но если есть кэш - лучше 32, поддерживаю
Dmitriy
чтение пофиг
Dmitry
Привет! В сущности есть поле json. C фронта прилетает массив объектов, если их тупо смаппить в DTO, то в таблицу пишется корректно, а если в DTO использовать поле, как массив другой DTO, то в таблицу кладется пустой массив объектов [{},{},{},{},{},{},{},{},{},{},{}] как надо дополнительно настроить doctrine, чтобы не было так
Kirill
ничего не понял)
Kirill
json - это же тупо stdclass, скаляры и массивы
Kirill
DTO он хавает просто потому что так получается
Kirill
фактически это багло и оно не должно с ними работать, всегда генерируя для них пустые объекты
Dmitry
ничего не понял )
Kirill
так что путь следующий:
1) или из DTO сделать VO, добавив jsonSerialize
2) или написать свой тип для доктрины, где будет использовать serializer, который и будет нормализовывать значения
Kirill
или самый нормальный и правильный вариант - отправлять в сущность нормализованные объекты сущности, т.к. они даже не рядом с данными/dto из запросов и не имеют к ним никакого отношения
Dmitry
есть же вроде расширения, которые это делают
Dmitry
ExampleDTO
{
/**@var FooDTO[] $fields */
private array $fields;
так не работает
Dmitry
ExampleDTO
{
private array $fields;
а так работает
Dmitry
по идее свой тип, хорошая идея
Kirill
оно и так и так не должно
Anton
Kirill
это просто багло, что у тебя второй вариант пашет
Dmitry
Kirill
Kirill
у нас же орм
Anton
А не надеяться на не явные штуки, которые это сами сделают
Anton
Не явных штук в ларе много. И к чему это их привело 😄
Dmitry
Kirill
final readonly class ExampleValueObject implements \JsonSerializable
{
public function __construct(
/**
* @var iterable<array-key, FooValueObject>
*/
public iterable $fields,
) {}
public function jsonSerialize(): array
{
return [
'fields' => \iterator_to_array($this->fields, false),
];
}
}
final readonly class FooValueObject implements \JsonSerializable
{
public function __construct(
public string $foo,
public string $bar,
) {}
public function jsonSerialize(): array
{
return \get_object_vars($this);
}
}
Kirill
ну хотя бы
Kirill
хотя тоже не очень из-за прибития гвоздями JsonSerializable
но т.к. это VO, то можно
Anton
Dmitry
там просто массив объектов и объекты простые, без вложенности
Kirill
а так-то лучше свой тип сделать для этого json
Kirill
а внутри него уже руками положить в VO при получении и разложить обратно в ассоциативный при сохранении явно
Dmitry
Спасибо
Kirill
но вообще, в принципе json только для одного норм, имхо - делать что-то вроде EAV) Где можно в поле value сохранять значения разных типов, а не под каждый тип своё поле фигачить))))
Kirill
больше ни для чего json нафиг не нужен
Dmitry
Kirill
ну вот я только там для значений json и использовал
Dmitry
Kirill
ну вот я только там для значений json и использовал
типа:
// Дискриминатор мапа по type
abstract class AttributeValue
{
// json
protected mixed $value;
// many2one
public Attribute $attribute;
}
final class IntAttributeValue extends AttributeValue
{
public function __construct(int $value, ...)
{
$this->value = $value;
}
}
Kirill
Dmitry
#[MapRequestPayload] UserVO $userVO поймет?
Kirill
MapRequestPayload - это слой представления вообще)
Kirill
а пользовательские данные никакого отношения к энтитям и бд не имеют
Kirill
Kirill
ну.... хотя...
Павел
нет же)
Ну а почему бы и нет? Что случится если будет сразу емейл VO?
Павел
Тут скорее главное чтобы обратного не было, чтобы логика о реквесте не знала.
А то что представление что то подготовит, ну хз, имхо почему бы и нет
Kirill
ну я понимаю, конечно, что можно забить болт
Kirill
но проблем там ппц
Павел
Kirill
не, если из одного поля VO, то вполне норм ещё
Kirill
ну т.е. не норм, конечно
Kirill
но терпимо
Павел
)))))
Kirill
кроме валидации - никаких проблем
Павел
Ну короче надо просто прогать и всё =) Если не мешает - значит норм
Kirill
это сейчас не мешает
Kirill
Kirill
non empty в частности