Юра
Хехе
Юра
Добавить в селект еще надо
Konstantin
Ну на то и есть инфо по количеству кверей)
да, но долборазраб что это забыл и долботимлид, что это аппрувнул, не особо в курсе что тебе это прод раком поставило. я бы хотел более явного поведения - типа эксепшн, если ты пытаешься обратиться к непроинициализированной коллекции
Gleb
Агааа попался
Да) я в симфе баклажан((( мало ещё работал.
Konstantin
или bulk-апдейты весело делать, или апсерты
Gleb
Добавить в селект еще надо
Вторую связанную сущность получается?
Юра
ОРМ девопсу не друг )
Konstantin
где-то у меня был список претензий к орм, чисто для срачей
Юра
Вторую связанную сущность получается?
Да. Иначе онг её не сгидрирует
Konstantin
ОРМ девопсу не друг )
да какой я девопс, я так, палочкой в них тыкаю
Gleb
Типа select([User::class, Skill::class])?
Юра
Select post, tags
Юра
Join post.tags tags
Юра
Вроде так я уже не помню )
Gleb
Вроде так я уже не помню )
Понял) спасибо, дальше разберусь)
Юра
За меня давно уже копайлот пишет
Юра
)
Юра
Короче да мало приджоинить надо еще выбрать
Alexey
За меня давно уже копайлот пишет
Оно что-то внятное писать умеет? Я думал по сути просто заменяет гугление и копипасту с гитхаба/стаковерфлоу?
Юра
Бэз понятия. Я больше верю в ноукод чем в копайлот
Юра
Как по мне безперспективный проект
Юра
А вы видел фичу? Я только сейчас заметил?
Юра
Kirill
Привет! Подскажите, команды, eventSubscriber'ы и тд могут содержать в себе бизнес логику? Или правильнее всю бизнес логику держать в сервисах и вызывать из команд?
Kirill
В таком случае получается достаточно много сервисов, которые в свою очередь обращаются к репозиторию. А репозиториев для одной сущности тоже можно делать много? Если да, то по какой логике их разделять?
Kirill
Очень большой репозиторий получается)
Kirill
Репозиторий должны содержать только простые методы
Если мне нужна специфическая выборка из нескольких таблиц, то это куда?
Gleb
В квери провайдер
а это что за зверь? гугл ни в паттернах, ни в целом по поиску сходу ничего внятного не даёт.
Gleb
точнее немного ноги обнаруживаются в DAO на Java. Оно?
Юра
Не знаю почему репозиторий должен содержать только простые методы
Юра
Где это написано ?
Ahmad
Просто провайдер которые возвращает данные
Можно пример? А то я тоже добавляю выборку из нескольких таблиц в репозиторий.
Kirill
у нас простые запросы, которые можно через queryBuilder сделать, лежат в репозитории, а сложные, в Storage'х. Там SQL через executeQuery и маппинг через ResultSetMappingBuilder
Dmitriy
команды и их хендлеры, в которых логика записи
Dmitriy
запросы и их хендлеры в которых можно EntityManagerInterface прокинуть и достать оттуда репозиторий и сделать нужный запрос либо через dbal
Nikolay
Можно пример? А то я тоже добавляю выборку из нескольких таблиц в репозиторий.
class AccountDataProvider { public function getActiveAccounts(): array { $qb = $this->em->createQueryBuilder ....... query with multiple joins return $db->getResult() } Как пример
Alex
Привет всем! А кто юзает сонату админ, можете подсказать: простой кейс - надо добавить в меню вложенную группу ну, то есть, есть некая сущность, которую я помещаю в меню с условной аннотацией: tags: - { name: sonata.admin, model_class: App\Entity\Post, manager_type: orm, group: 'Content', label: 'Post' } Как проще сделать еще одну виртуальную группу внутри группы Content ? Чтобы в меню это выглядело так Content->Somethingelse->Post
Igor
Добрый день, сталкивался кто с проблемой бесконечных джобов в event listener'е доктрины, которые вызывают события event listener'a, которые в свою очередь, запускают заново джобу (от того и бесконечный цикл выходит)? То есть у меня задача такова: надо по update событию event listener'а запушить определенную джо,у, меняющую этот же объект на который навешаны события. Есть ли какие-нибудь решение такой проблемы? На ум лишь приходит сохранение стейта в кэш, а в очереде уже проверять
Юра
Есть решения
Igor
А поточнее?
Юра
Если есть рекурсия нало во-первых подумать про бейс кейс и условие остановки
Юра
Например посмотреть ченджсет
Юра
Может ты можешь не выполнять что-то если в ченджсете нету чего-то
Igor
Юра
Ну у тебя будут два разных ченджсета
Юра
Джобу я так понимаю можно запустить только если что-то там в ченджете конкретно есть
Юра
Или чего-то нет
Igor
не, в любом случае
Igor
Изменилось любое поле, пушим очеередь
Юра
А что меняет джоба?
Igor
Синхронизация с другой системой таким образом реализована, которая немного поля ентити
Igor
А что меняет джоба?
Сам ентити, а точнее его поля
Юра
Архитектурно что-то не то как по мне
Igor
И мне нужно на каждое события update'а эту джобу пропушивать
Юра
Заведи статик поле
Юра
Костыль но сработает
Юра
Типо джова отправлена
Igor
Архитектурно что-то не то как по мне
ну, иного ничего не придумал :/
Юра
Есть другой способ
Igor
Раньше в сервисах это дело было, и оно вызывалось на каждом методе, который апдейтил стейт ентити
Юра
Но он тоже на грани костыля
Юра
Заводишь хелпер а который ты добавляешь колбеки в очередь, сам хелпер выполняет их после флаша
Igor
хым
Юра
Но нарушается атомарность
Igor
Видимо будет тогда разумнее обратно вернуть эту логику в сервисы. Если только чего не придумаю
Igor
Спасибо за ответы
Max
Всем привет. Кто-нибудь приложение разворачивает в кубернетисе? Нужно запустить unit тесты перед выкаткой приложения. Но девопс упёрся и говорит что APP_ENV=dev/prod и параметр —no-dev в composer должен быть единым. Ссылается на Twelve-Factor App. На моей памяти деплой был таким: 1) Предустановка, линтеры и всё таке 2) Запуск тестов (APP_ENV=test или dev) 3) Если успешно, тогда APP_ENV=prod и composer —no-dev Мож что-то новое придумали, а я как старовер пургу несу?
Konstantin
тестить код надо, а не контейнер
Max
А можно более развёрнуто?))
Konstantin
поэтому нормальным считается запускать тесты в другом контейнере, перед сборкой релизного. тестам много чего может быть нужно, чего не должно быть в продакшне. xdebug какого, лимитов на время выполнения, настроек и прочего. и действительно, dev-пакетам нечего делать в релизной сборке
Andrei
Коллеги, а подскажите плиз сирому про доктрину. Вот есть сущность, в ней коллекция сущностей, а в той коллекции еще коллекция сущностей. везде cascade={'persist'} указано. Если я в первой коллекции добавляю-удаляю что-то, то все в БД сохраняется, а вот если во второй - то изменения игнорятся. ЧяДНТ?
Max
поэтому нормальным считается запускать тесты в другом контейнере, перед сборкой релизного. тестам много чего может быть нужно, чего не должно быть в продакшне. xdebug какого, лимитов на время выполнения, настроек и прочего. и действительно, dev-пакетам нечего делать в релизной сборке
Ну... Тогда схема будет такой? 1) контейнер тестов: - Предустановка, линтеры и всё такое - Запуск тестов (APP_ENV=test или dev) 2) Контейнер прода: - Предустановка, линтеры и всё такое APP_ENV=prod и composer —no-dev
Andrei
чую что доктрина при добавлении во вторую коллекцию, почему-то считает что элемент первой не изменился, как заставить ее это понять?