Danil
Кто нибудь пользовался LexikFormFilterBundle?
Sergey
Sergey
методы репозиториев либо добавляют сущность на хранение, либо удаляют, либо возвращают одну и ровно одну сущность (или кидают исключение)
Sergey
если твоя бизнес логика требует что бы репозиторий вернул коллекцию - значит ты где-то не сделал сущность которая имеет эту коллекцию
Sergey
а методы вроде getAuthorsWithComments лучше выносить в отдельные классы
Sergey
которые не умеют persist и которые делают тупые read-only выборки
Sergey
и тогда жизнь будет чуть меньшей болью
fink3L
fink3L
ааа кажись понял
fink3L
но лучше будет если пояснишь))
fink3L
У меня получилось как то так
AuthorRepository
+getAuthorsWithPostsQuery():qb
+getAuthorsQuery():qb
AuthorManager
+getAuthorsWithPosts():Author[]
+createAuthor():Author
+update($author) // тут работаем с базой
fink3L
все как на той картинке
fink3L
fink3L
блин, надо себе футболку с таким принтом заказать
fink3L
Sergey
ну значит делаем отдельный сервис который такими вещами занимается
Sergey
можно даже круче, что бы этот сервис никогда не возвращал сущности (мэпить напрямую на DTO или массивчики)
Sergey
тогда и пачки геттеров из сущностей уйдут
Sergey
хотя это если ты реально будешь загоняться, так что достаточно просто вынести выборки которые ты делаешь только для UI в отдельный сервис
Sergey
воимя SRP
Sergey
> а потом надо будет этот список получить для бизнес логики
для бизнес логики все данные должны лежать в пределах агрегата (и там должен быть корень через который ты операцию проводишь)
Sergey
если у тебя какие-то правила выборки есть определенные - формируешь объект-критерию для коллекции.
fink3L
fink3L
спасибо, подумаю над этим
Sergey
я вот пытался вспомнить хоть один случай когда у меня дублировались правила выборок для логики и для UI
Sergey
и не смог придумать
Sergey
если кто может накинуть таких буду рад
🐴
fink3L
🐴
гм
🐴
"плохо" подразумевает "хоть как-то"
🐴
явно не мой случай
🐴
впрочем, я кажется знаю слова "для" и "который"
Rinat
Странно, чатик на мобилке не подгружается.
Ivan
вот где-где, а на пикабу я такого точно не ожидал))
http://pikabu.ru/story/doctrine_best_practices__1_4327349
Alexey
Ivan
ну да, то что было на видео
Ivan
просто место размещение неожиданное:)
🐴
чуваки
Alexey
Это да.
🐴
а поясните мне за композер
🐴
вот у меня в проекте мы коммитим vendor в репу, прям всю папку в гит
Ivan
зря наверное)
Alexey
🐴
я так понимаю, что это неправильно
🐴
но
Ivan
правильно понимаешь)
🐴
что мне ответить боссу, когда он спросит, а как мол быть, если пакагист лег, а нам надо деплоить?
Alexey
Коммитить надо composer.json и composer.lock.
Ivan
ну локально ж вендор есть
🐴
где локально?
Alexey
Модератор
🐴
и стейджем
🐴
и остальными
🐴
вот представь, замержил я в мастер, дженкинс ломанулся собирать билд, а пакагист лежит
🐴
меня будут иметь всем отделом
🐴
потому что я сломал CI
🐴
своим предложением
Alexey
Поднимите satis.
Alexey
https://code.tutsplus.com/tutorials/setting-up-a-local-mirror-for-composer-packages-with-satis--net-36726
Alexey
Ну впихни его к дженкинсу.
🐴
все тот же вопрос
🐴
какую выгоду получит бизнес?
Ivan
интересно, какой объем всего пакагиста
🐴
у девопсов лишняя точка контроля
🐴
лишнее место где может сломаться
🐴
лишняя головная боль
🐴
в чем профит?
Alexey
А что обосновывать?
Вы не хотите пиздец в репозитории и не хотите доверять пэкэджисту. За все надо чем-то платить.
Модератор
🐴