Evgeniy
с более ранней версией не получится, я как-то очень плотно с этой проблемой воевал пару лет назад, ничего не вышло
А с этой версией получилось?
У меня валится по причине
An exception occurred while executing a query: SQLSTATE[23502]: Not null violation:
7 ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, -756344054, 2, 536, My new group 1808, group, 2022-08-22 12:56:21, 2022-08-22 12:56:21).
Ну оно логично, id - not null, но когда делаем save сущности, где null идет в ключе - оно генерируется.
Т.е. doctrine для ключа видимо где-то перед отправкой все таки property вообще удаляет. Т.к. при прямом insert в БД без null все работает - с null, ошибка повторяется.
Для field видимо этого не завезено, либо я что-то упускаю.
Вопрос - как сохранить сущность, у которой автоинкрементируемое неключевое поле == NULL?
Konstantin
#[ORM\Column(
name: 'foo',
type: 'integer',
unique: true,
insertable: false,
updatable: false,
columnDefinition: 'default nextval(foo_seq)',
generated: 'INSERT',
)]
protected readonly int $foo;
Konstantin
вот прям из боевого кода скопировал
Юра
А как-то можно сделать чтобы универсально без дефолт некствал?
Konstantin
видимо свой column писать, который по типу @Id умеет найти имя сиквенса по имени таблицы
Юра
У постгре нету автоикремента я так понимаю?
Evgeniy
Konstantin
увы) это раковая концепция довольно, постгрес мощнее в этом плане
Юра
Ну сделали бы поверх этой супер мощной концепции обычный инкремент ) обычно его с головой хватает
Юра
Для простых проектов
Nikolay
Юра
Значит есть автоикремент?
Юра
Статья топ. Явно разбираются в сео
Павел
Павел
Если глобально, думаю можно описать это в качестве аргумента в DI, как то делал через компайлер пасс, но не думаю, что это верный путь
Павел
Павел
Павел
Вот, вроде можно, кейс так же работает, как и с нормализацией
Павел
Юра
Сериализатор по дурацкому сделан
Юра
Через цепочку обязанностей
Юра
У меня каждый раз голова взрывается когда начинаю его дебажить
Юра
Имхо надо было делать через арену или что-то такоея как секурити воутеры
Gleb
Знаю про DateTimeImmutable) это учебный проект.
Konstantin
совет мимопроходила: не юзайте DateTime, переходите на DateTimeImmutable
Павел
Павел
Посмотрел свои dto, да, геттеры, сеттеры не юзаю для дат
Павел
Хотя сам не пойму точно 😅😅😅
Павел
@oleynikgleb А вообще, если юзаете для json которые летят из request, наверное проще брать уже собранный фреймворком сериалайзер. Немного накладнее по ресурсам, но это спички, имхо
Павел
Можно даже денормалайзер, и в него засунуть массив из $request->toArray()
Павел
Павел
Павел
Сериалайзер из контейнера
Gleb
Хм... кажется пора приобретать привычку кэш физически сносить. Сейчас и у меня запустилось. 🤔 хотя восстанавливал через ctrl+z, т.е. тот код, который не поднимался.
Gleb
Кстати, а часто кэш подвисает и cache:clear не чистится?
коллеги рассказывали что бывает и такое.
Павел
Но поидее кэшу тут решать нечему.
Павел
Gleb
Там получается как минимум есть (/vendor/symfony/serializer/Serializer.php метод denormalize, переменная $normalizer)
-cache: Symfony\Component\Cache\Adapter\PhpArrayAdapter {#363
-file: "/app/var/cache/dev/annotations.php"
и
-denormalizerCache: array:1 [
"json" => array:1 [
"App\DTO\SaveLessonDTO" => array:3 [
0 => false
10 => false
11 => true
]
]
]
-normalizerCache: []
плюсом где-то ещё видел метки времени по жизни кэша.
Gleb
в самом объекте нормалайзера
Павел
Gleb
в любом случае ещё раз большое спасибо!)
Юра
Кешируют всякие проперти экстракторы
Юра
И аксессоры
Юра
Стоп я что-то не понял
Юра
Я думал \Exception это базовый тип для всех исключений
Юра
Оказывается нет
Юра
Т.е. если написать catch (\Exception $e)
Юра
то нет гарантии что оно словит все исключения
Сергей
Пиши Throwable $e
Konstantin
^ не пиши
Иван
пиши не пиши
Gleb
^ не пиши
А почему не писать? Вопрос действительно интересный. Сейчас разделили на классы Error и Exception. А если нет DI, интерфейс вообще можно поймать?
Konstantin
The Ant
Юра
Получается брейкинг чендж
Alexey Mishurovskiy
Всем привет! кто-то занимался реверсом ionCube?
Kirill
Всем привет! Кто-нибудь использует mutagen для разработки под докером на маке? Пишут, что он ускоряет докер на маке и работать не так больно)
Konstantin
мутаген - это про ансибл все же, не до конца понимаю как он докер на маке должен ускорять
Vlad
так докер на маке и так уже быстрый, если конечно включен VirtioFS
Vlad
Konstantin
ага, нагуглил уже, спасибо
Kirill
Kirill
ну что-то чуда не произошло)
Andrei
Коллеги, а у вас не было кейса когда нужны две сущности доктрины, основанные на одной и той же таблице?
Eldar
Konstantin
а зачем? так-то можно, а какую проблему решаете?
Andrei
а, типа все аннотации в Maker написаны?
Andrei
Andrei
соответственно есть два разных агрегата из разных контекстов. но оба имеют в составе сущности, которые опираются на одну таблицу бд. Наводить микросервисную ересь с отдельными БД нет желания)
Konstantin
так, а в чем сложность тогда, оно вроде из коробки сработает. максимум - MappedSuperclass придется сделать, но это не точно