Kirill
просто хранить данные как получится — это задача хуёвой бд, вроде монги)
Михаил
Ой, помню тут спор за enum был Щас понабегут свидетели того что на уровне бд ничего важного не должно быть и всё надо через клиентский код делать.
The Ant
енумы в бд юзать и вправду джунство
The Ant
в пг победили переименование, и то сравнительно недавно а в мускле до сих пор нельзя нормально переименовать значение. пиздец )
The Ant
уже молчу про скрытые джойны
Юра
а почему не через бд это сделать?
Так у него и так через бд настроено
Юра
onDelete это БД
Юра
Только если у него нет там ключа то оно и не будет работать
Юра
Если он руками там создаёт
Юра
Поэтому не нужно руками создавать
Юра
Чтобы делать это доктриной нужно использовать cascade=...
Юра
А не onDelete=cascade
Павел
не люблю фк ) гемор с ними голимый. Да и неявное поведение получается, в коде не видно, что автоматом удаляется.
Как я помню, ты пишешь мигрции руками. Вот onDelete - это удаление через фк, которое ты не прописал
Павел
Юрий выше верно говорит + orphanremoval
Юра
Можно удалить случайно половину данных в бд
Юра
Ну например можно случайно удалить то что не планировалось удалять
Юра
Ты удаляет одну энтити а следом удаляется ещё куча других
Юра
Вообщем я чёт конкретику не вспомню уже но помню что нужно быть осторожнее с этим орфан ремовал
Юра
Как минимум хорошо доку прочитать )
The Ant
Как я помню, ты пишешь мигрции руками. Вот onDelete - это удаление через фк, которое ты не прописал
почему тогда на другом проекте работает? я сегодня специально запускал там и там,.. дичь какая-то. единственное че отличается это версия симфы, там где работает 7-я, где не работает 6.3.
Павел
Но вообще orphanremoval я не тестил где много связей. Но по его смыслу в теории это возможно. По сути мы удаляем связь а значит и сущность, если меняется родитель, так как это единоличное владение
Павел
onDelete - это опция длф ФК а не для ОРМ
Павел
У меня просто с cascade=remove как то тоже не выходило, поэтому начал ставить orphanremoval
The Ant
Павел
орфан коварная хрень ) сайдэффекты могут быть лютые
Ну по его смыслу да. https://stackoverflow.com/questions/27472538/cascade-remove-vs-orphanremoval-true-vs-ondelete-cascade
The Ant
Ну по его смыслу да. https://stackoverflow.com/questions/27472538/cascade-remove-vs-orphanremoval-true-vs-ondelete-cascade
я как-то юзал орфан, где надо было удалить всю коллекцию и вставить новую (чтоб не городить дифф) так эта сука в 1 транзакции сущностям новые айдишки проставила типа "новые"
The Ant
он )
The Ant
так шо аккуратней
Павел
Ты почистил коллекцию и вставил новую, это новые объекты для ОРМ, вот тебе и удалило и вставило
The Ant
без орфана оно вставит теже объекты, а с орфаном это рельно новые будут
Павел
без орфана оно вставит теже объекты, а с орфаном это рельно новые будут
Что значит те же? Если ты получил другую коллекцию с фронта образно
The Ant
блин не вспомню точно как было... надо эксперементировать чтобы повторить
Павел
блин не вспомню точно как было... надо эксперементировать чтобы повторить
Вроде как если сетить коллекцию новую, то он в пивот таблице many-to many делает новые записи. Значит и с другими объектами тоже
The Ant
что касается onDelete, почему onUpdate нету? оно ж тоже в фк моджно
The Ant
хотя в доке про он делит написанол что "на стороне бд"...
The Ant
а так он мне тег удалит? )
Павел
а так он мне тег удалит? )
Поидее должен но хз)
The Ant
Поидее должен но хз)
да, тег захуярил. причем, связи в табличке остались 🤣
The Ant
че ток ручное удаление связи чтоль? нету автомата?
The Ant
не хочу фк )
The Ant
анальное жжение вызывают...
Юра
Не совсем конечно понимаю в чем трабла ФК. Если что форин Ки чеки можно отключать если нужно какой-то батч инсерт сделать или что-то такое
Юра
Отключил, вставил, включил
Юра
А так всё-таки они гарантируют что в бд не находится какой-то мусор
Юра
Но видимо тут что-то личное раз такая ненависть к ним )
Юра
Может человек не любит когда что-то мешает ему вставлять
Павел
не хочу фк )
Ну просто в симфе врядли они будут подчищаться без сушности и без фк отдельным запросом, когда по дефолту там ФК при построении связи
Михаил
Отключил, вставил, включил
А это можно сделать в рамках транзакции/соединения Чтоб все коннекты стразу не аффектило?
Юра
По-моему оно применяет к текущей сессии
Юра
Пока не включишь обратно
Павел
По-моему оно применяет к текущей сессии
Только вот включение уже не гарантирует консистентность
Павел
Оно работает именно на инсерт при включенной проверке
Aleksandr Khristenko
А подскажите, если мне в ArgumentValueResolver нужно в случае неполных данных возвращать 400 response с json в body, то как правильнее поступать?
Dmitriy
Брось исключение
Aleksandr Khristenko
Брось исключение
Ну т.е. других вариантов кроме как бросить исключение + хандлер, который будет его ловить и возвращать респонс нет?
Dmitriy
Ну т.е. других вариантов кроме как бросить исключение + хандлер, который будет его ловить и возвращать респонс нет?
Ну мы так делаем резолвер https://github.com/15web/symfony-starter-kit/blob/main/backend/src/Infrastructure/ApiRequestValueResolver.php обработка исключений https://github.com/15web/symfony-starter-kit/blob/main/backend/src/Infrastructure/EventSubscriber/ExceptionEventSubscriber.php по другому с резолвером я думаю и не получится, он же резолвит объект в экшн
Nikolay
Подскажите, кто пользуется встроенным штормовским http-клиентом. Есть ли там возможность одновременно несколько параллельных запросов запустить? Вроде не нашел такого
Nikolay
Надо проверить обработку, видимо через курл придется или постман
The Ant
по енв процессору есть эксперты? есть в доке штука, которая дефолт значение может задать: env(default:fallback_param:BAR) И есть каст в скаляр определенного типа: env(int:BAR) Вопрос как их подружить то? чтоб в 1 параметре оба работали
Михаил
default:fallback:int:BAR
Михаил
Ну только ты прнимаешь что default сработает тогда, когда bar нет или он не int типа
Михаил
А вот что бы default скастить в нужный тип, то ты должен объявить параметр fallback_param и к нему присвоить другую env или значение, которое уже скастишь.
Юра
Объявления о работе в чате https://t.me/symfonyjobs
Dmitry
всем здарова, используете ли вы s3 хранилища ? желательно которые находятся на вашем администрировании (ни вк клоуд, ни яндекс клоуд ) че можете посоветовать ? minio ?
Виктор
Всем привет! Продолжаю изучать Симфони (и вообще =)). Вопрос по правильной организации кода. Как я уже писал, у меня есть следующие три сущности: фотоальбом, фотография и статья. Все их можно комментировать. А ещё комментарии можно редактировать и удалять. Понятно, что код для этих манипуляций один и тот же - меняются только сущности. И вот вопрос: как правильно организовать код? На данный момент набросал всё подряд в контроллере фотоальбома, лишь бы работало. Теперь хочу это организовать и затем подключить в контроллере для фотографии и текста. Пока кажется, что стоит сделать трейт Commentable. Правильно ли это или есть лучшие практики для решения подобных задач?
Виктор
Да, наследуют от Comment: AlbumComment, PhotoComment, TextComment.
Михаил
А какие юз кейсы будут Вот ты получил сущность альбом. Запросил у неё комментарии (просто дёрнул поле) и упал по памяти, потому что комментов миллион
Михаил
Или тебе нужно будет только вставлять коммент и удалять? А для того, что бы получить последние сущность не нужна?