Konstantin
интереса ради попробуйте, не знаю, переводчик из симфони "подхачить", поменяв в нем, ммм, логику MessageCatalogue. очень быстро станет понятно, что надо форкать весь компонент - нельзя его без черной магии "подхачить", получив желаемое здесь и сейчас поведение. и это классно
Konstantin
так и на пхп можно пачтить вендор код)) я видел один проект, который с помощью git patch правиться вендор код))
это уже черная магия, увы, тут я бессилен 🙂 такое должно решаться на уровне запретов подобных инструментов
Vlad
ну иногда надо, чито поделать
ну это очень очень редкий кейс, в 99% решается декораторами
Vlad
ну если либа использует контракты
Павел
оправдано или нет - сложно сказать, но если посмотреть на то, что люди делают с джанго, рором или жсом - волосы на жопе шевелятся зачастую. пропатчить глобальный корневой объект фреймворка потому что вот здесь тебе в формочке нужна была кнопка в другом месте? - пожалуйста!
Только вот если по итогу, что то жестко нужно. Рвут волосы на жопе именно те, кому потом это нужно, так как все перекрыто. Например та же либа "течет". Короче спорно. Не прям ппц, но бывают кейсы когда финалки мешают
Konstantin
если либа течет - это отличный повод ее не юзать
Konstantin
либо форкнуть
Konstantin
а юзать либы не так, как это предусмотрено - верный способ выстрелить в ногу или себе, или своим коллегам
Konstantin
потом при банальном минорном обновлении (например, чтобы закрыть CVE) у твоего коллеги радостно всё взорвётся так, что он в жизни концов не сыщет
Павел
Но это если обновлять) а бывает нужно "сдесь и сейчас", но тут да наверное форк
Konstantin
ну я ж говорю, всегда есть трейдоффы - либо сделать по-быстрому сейчас, тк это проект одноразовый, либо идти через боль и жертвовать временем разработки во имя долгой жизни проекта
Konstantin
я обычно стараюсь участвовать в проектах второго типа, это интереснее, пусть и сложнее
Павел
ну я ж говорю, всегда есть трейдоффы - либо сделать по-быстрому сейчас, тк это проект одноразовый, либо идти через боль и жертвовать временем разработки во имя долгой жизни проекта
Ну всегда можно потом пофиксить и т.д. Не нужно боль и страдания ) Это из раздела - не везде нужен ДДД, не везде нужен сложный код, где то можно и sqlку ебануть чуть ли не в контроллере
Павел
И это говорят прошаренные люди)
Павел
Конечно не про контроллер - это уж я так)
Павел
Хотя мб и это норм будет, зависит от места.
Павел
Управление сложностью, все дела
Konstantin
прошаренные люди - штука очень зыбкая, чтобы на нее полагаться в публичном поле 🙂 это как "в свой двор можно и под кирпич заехать, я 100% знаю что там ни ментов, ни камер". но только советовать всем в чате "да не парьтесь, пацаны, под кирпич ездить нормально абсолютно, нужны вам эти лишние объезды и трата времени" так себе 🙂
Konstantin
начать с "делать как атцы в книгах пишут", а там уже адаптировать под свои реалии. но точно не патчить вендоров, писать руками схемы апи, не использовать типизацию итд
Павел
Где то использовать сложный ооп, где то транзакшион скрипт
Konstantin
так-то в той же мамбе/баду еще несколько лет назад было что один урл - один пхп-файл, никаких фреймворков-роутингов не было. каждый урл - свой фронт-контроллер. и там набираются нужные данные в нужном формате. специфика проекта? да, безусловно. там высокие нагрузки, много народу, много легаси, высокая скорость внедрения фич стоит ли делать так же? вряд ли
Руслан 🇲🇨
Здраствуйте! Как найти причину почему роут не работает?
Vlad
а ты как роут регистрируешь?
Руслан 🇲🇨
three: path: /3 controller: App\Controller\DefaultController::three
Vlad
bin/console d:ro
Vlad
что пишет
Руслан 🇲🇨
Vlad
получается роут зареган. а как запрос отправляешь
Руслан 🇲🇨
Даже если в браузере пишу "http://symfony/3" пишет "Объект не найден!".
Vlad
странно какой объект. Можешь ошибку полностью скинуть
Руслан 🇲🇨
Vlad
ну ето апач криво настроен
Vlad
симфони тут не причем
Vlad
поди openserver
Руслан 🇲🇨
/ нормально работает.
Руслан 🇲🇨
Vlad
php -S localhost:8000 -t public/
Vlad
попробуй поднять родной пыхный сервер и зайти на нужный роут
Руслан 🇲🇨
🙏
Nikolay
🙏
В чем прикол давать роуту такой маршрут?
Vlad
та он учится видимо
Алексей Анатольевич
бывает так глючит что начинаешь давать и не такое :D
Алексей Анатольевич
особенно после 72часовых спринтов
Алексей Анатольевич
:D
Nikolay
Может кто подсказать по api nelmio doc (2 версия). Генерируется документация по аннотациям, навешены constraint на поля (assert/valid). Можно ли как то исключить их, чтобы они не попадали в доку?
Vlad
Задекорировать парсер
Vlad
https://github.com/nelmio/NelmioApiDocBundle/blob/2.x/Parser/ValidationParser.php
Nikolay
https://github.com/nelmio/NelmioApiDocBundle/blob/2.x/Parser/ValidationParser.php
Спасибо, это единственный вариант?
Vlad
других нету)
Nikolay
других нету)
Думал может по другому можно, но видимо никак
Nikolay
других нету)
Вероятно, можно как-то его доделать, чтобы он только по группам генерировал?
Vlad
можно)
Nikolay
можно)
Спасибо, буду разбираться, 2 версия конечно не огонь
Илья
Добрый день, подскажите как можно реализовать - запрос через QueryBuilder (в две таблицы без связей между собой), на любой join он выдаёт ошибку "has no field or association named" (что логично), тут https://www.youtube.com/watch?v=EWjY8SOQBGk посмотрел что можно сделать на mysql так LEFT OUTER JOIN , но в билдере такого нет (найти не смог). Задача (есть две таблицы: table1 с полями user,sum,name и table2 с полями user,sum,address), нужно получить user,sum,name,address из двух таблиц где user = 1. при этом сохраняя стандартную сортировку и лимит ->setFirstResult($paginationEntity->getOffset()) ->setMaxResults($paginationEntity->getLimit()) ... Вариант сделать два запроса - смержить массивы и в фориче составить сортировку, оставил на последок, хотелось бы на уровне доктрины попробовать это решить
Иван
телепаты не могут ответить на вопрос, что вызывает has no field
Konstantin
только хотел сказать: напишите руками работающий sql-запрос, поможем его в доктрину переделать
Konstantin
выглядит как один простой джойн по user = 1, но описано так, что хер поймешь
Konstantin
господи что тут происходит
Илья
Дело в том что на простой запрос, я получаю - пустой массив, хотя в таблице данные есть
Konstantin
код принято в приличном обществе текстом кидать
Konstantin
а не скриншотами: так мы сможем скопировать ваше творчество, поправить и запостить обратно. со скрином, очевидно, это не очень работает
Иван
table1 - ох
Konstantin
но я вам могу порекомендовать вернуться в документацию и читать до посинения, у вас вопросы минус первого уровня (из 5)
Konstantin
такое тоже в приличном обществе не принято спрашивать: "поправьте за меня то, в чем я нихера вообще не понимаю"
Stanislav
Всем привет, у меня вопрос по построению запросов. Есть две сущности посты и фотографии постов. Между этими сущностями есть свзяь OneToMany, т.е. у одного поста может быть несколько фотографий, а у фотографии только один пост. Можно ли одним запросом вытянуть все посты с фотографиями?
Konstantin
да, можно
Stanislav
Чтобы посты не повторялись при этом, т.е. была группировка по постам
Konstantin
post.photos is not empty или типа того
Stanislav
Не, тут вопрос немного в другом, наверное я неправильно сформулировал, возможно ли в ответе получить массив постов а в конкретном массиве постов был массив фоток этого поста, чтобы я без дополнительных запросов в цикле их мог вытянуть
Stanislav
Нашел функцию ARRAY_AGG но в доктрине она не работает как я понял, а так на чистом sql она делает то что мне нужно
Konstantin
это не то, array_agg - это вендор-специфик функция постгреса, не нужно ею пользоваться пока
Konstantin
в доктрине не нужно оперировать массивами, у вас есть сущности. если напишете запрос вида select p from App\Entity\Posts p where p.photos is not empty на выходе будет массив Post[], у каждого из которых будет коллекция photos Photo[]
Stanislav
Ок попробую, спасибо
Konstantin
для начала опишите сущности Post и Photo - это чисто учебный пример работы с доктриной, везде будет на первых страницах документации
Konstantin
потом их селектьте https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/dql-doctrine-query-language.html