Viktor
adam
adam
а в коде(контроллере) дополнительно валидацию вызываешь?
Viktor
Viktor
validationContext еще наверно может влиять, если задан где-то.
Viktor
И да, сильно сомневаюсь, что с DTO это будет работать. DTO это не про данные, которые должны быть уникальны, на этом слое ничего про данные неизвестно, и не должно быть известно, так что по идее кроме как на слой ORM это накидывать бесполезно, но я не проверял.
adam
Вадим
привет!
подскажите пож это сильно плохо добавить public/bundles/apiplatform/ в гит?
Юра
Юра
Но обычно так не нужно делать
Вадим
Вадим
да надо в контейнер скопировать а её нету
Юра
Билд пайплайн нужен нормальный
Юра
Но на одной моей работе весь фронт комитили в гит
Юра
Куча файлов измененных каждый раз
Вадим
стащил репу, копирую в контейнер nginx
Юра
Ну сделай ассетс инсталл перед этим
Вадим
не понял
это ж надо где-то сделать
не тащить же мне в контейнер nginx все зависимости симфы только чтобы этот ассет сбилдить симфой
Вадим
или я не понял
Сергей
Сергей
Где то ж бек билдитсЯ
Вадим
билдится
ну типа я сбилдил бек, скопировал наружу эту папочку как-то из контейнера?
Юра
склонил репу, вызвал асетс инстал, скопировал все файлы в конейнер
Юра
у тебя что-ли код проекта маунтится?
Вадим
Вадим
Юра
Уже подсказали же
Юра
COPY --from ...
Юра
Почитай про мультистейдж билды
Nikolay
Есть один больой запрос, который собирается из нескольких селектов. Я решил вынести каждый запрос в свой класс. Собрать и пройтись по всем классам-запросам, чтобы склеить это все в один. Вопрос такой, норм ли такое делать через tagged iterator? У классов-запросов нет зависимостей, вроде в контейнер их не особо хочется пихать
Юра
Сервис не обязательно должен иметь зависимости чтобы в контейнер попасть
Юра
Просто он сам может быть зависимостью, это нормально
Юра
Сложно сказать что у тебя за логика там. Но насколько я знаю в симфони нельзя сделать что-то типо строка как сервис, или тегированные строки
Юра
Иногда подходит просто описать сервис в ямле и явно ему аргументы передать
Юра
Но это статический конфиг
Юра
Возможно тебе подойдёт один класс который принимает SQL строку
Юра
А дальше ты в ямле создаёшь сервисы на основе этого класса передавая ему аргумент строку запроса
Юра
Ну т.е. не забываем что помимо автовайринга есть ещё обычный способ описать сервис и он может иметь один класс, но разные айди
Юра
Тегу можно параметр передать, а компилер пасом можно проставить соответствия между этими сервисами и фильтрами или что там у тебя
Юра
Я обычно так делаю. Сначала представляю как это было бы удобнее с точки зрения пользователя, а потом думаю как это реализовать
Юра
Ну и самый гибкий вариант это кастомный конфиг и extension который этот конфиг обрабатывает и что-то делает с контейнером
Nikolay
В сервисе примерно такой код. Вот и весь сервис. Цель просто собрать пройтись и собрать один запрос, поэтому как рабочий вариант думал tagged iterator использовать
class TotalSumQuery {
public function get(): string {
return <<<SQL ... SQL
}
}
Юра
Ну ты можешь принять в конструкторе запрос например
Юра
И обойтись одним классом
Юра
Вынести в ямл это все
Юра
Тем более там тоже есть мультистрочные скаляры
Nikolay
Ну цель как раз, что каждый запрос отдельно лежит в своем классе, по имени класса можно понять про что запрос
Павел
С итератором работают все же с абстракцией, когда не важно что там внутри. Слабо понимаю, как может быть не важно содержимое sql
Nikolay
Павел
$query.= $this->getUserQuery():
$query.= $this->getOderQuery():
Я понимаю что тут строится и главное могу быстро пронавигироваться
Nikolay
Nikolay
В целом согласен, что возможно явно лучше это указать
Павел
Т.е. если бы например у вас было кучу зависимостей - это решает автосборку.
Если команда и куча добавляющихся запросов разными участниками - OCP
У вас же добавляется абстракция там где она вроде и не нужна + чуть добавляется сложность.
Павел
Прежде всего исходите от того, что вы пытаетесь решить и чем это поможет кому то
Павел
Например у вас может в одном запросе появиться какое то условие.
Все вам надо менять весь контракт всех классов, так как у вас интерфейс, а могло бы быть просто
$query.= $this->getUserQuery($userId):
$query.= $this->getOderQuery():
Nikolay
Чтобы добавить новый запрос. Поэтому я и спросил, потому что как раз возникли сомнения, стоит ли так делать (про итератор)
Павел
Например огромный sql без выделения в классы тоже удобно
Павел
Всегда можно скопировать весь запрос и отдебажить в БД
Павел
А не бегать по классам и собирать кусочки в один текст
Павел
Нужно решать сложности и делать сложное проще, а не просто архиткетурить ради архитектуры
The Ant
Квери билдеры нынче не в почете... Бида.
Apxat
А почему ?
The Ant
Сужу по последнему вопросу 🤷
Apxat
просто недавно видео видел от создателя cycleorm
Apxat
он как раз говорил что они выбрали query билдер подход, а не DQL
Apxat
а почему я не понял -)
Nikolay
Apxat
а почему ?
Apxat
мне dql тоже не очень нравится