Корочка
->join() сделай и все. Почитай документацию по DQL
Konstantin
поле тайп лишнее
Evgeniy
кстати, поздравляю, вы сделали хуйню :)
Почему? Лучше было бы создать еще одну таблицу(category_image) ?
Konstantin
нет, поле лишнее, если задуматься
Konstantin
если непустое ads_id - это картинка для объявления, если непустое category_id - это категории
Evgeniy
select a, i from App\Entity\Ad a left join a.images
А по какому условие join выполнится?
Konstantin
чтобы не было ситуации когда одна картинка на две связи ссылается - можно check() в ddl написать
Konstantin
А по какому условие join выполнится?
по тому что в связи описано
Evgeniy
если непустое ads_id - это картинка для объявления, если непустое category_id - это категории
В таком случае да, уж лучше делать норм связи и все будет ок
Evgeniy
по тому что в связи описано
Тогда связь должна быть на уровне entity, в аннотациях. А если ее нету, то как быть?
Konstantin
о том и речь, ситуация шаблонная, вы ее на ровном месте усложнили. при этом готов поспорить, что целостность базы дополнительную вы не гарантировали
Юра
Короче пропиши просто нормально все рилейшены включая inverse side.
Корочка
Тогда связь должна быть на уровне entity, в аннотациях. А если ее нету, то как быть?
Тогда просто джойнишь. Потому что под капотом он все равно джойнит. Он делает те же действия
Юра
И получитсч у тебя select c,i,a from category c join c.image as i join i.ads as a
Evgeniy
Всем спасибо
Alex
доберусь до компа, даже повтыкаю в исходники. так-то с виду вроде все правильно сделали
class PanelUserRepository extends EntityRepository вместо ServiceEntityRepository Но я не понимаю что передавать вторым параметром в конструктор тогда ClassMetadata $class - это как?)
Konstantin
быстрее подебажить что происходит в ManagerRegistry::getManagerForClass
Alex
Нашел проблему http://joxi.ru/D2P5Oa3swbX5LA был указан type: annotation http://joxi.ru/vAWa7kLf34EMjm
Alex
Хотя в энтити использую атрибуты
Dima
Всем привет. Разрабатываем новый продукт, вопрос по архитектуре и подходе в целом Будет некий бесплатный функционал и возможность доставлять некоторые платные модули: бухгалтерию, трекер задач, воронку продаж, регистратуру и т.д. Каждый заказчик будет на свое усмотрение ставить нужные ему модули Эти модули должны быть независимыми между собой, cпокойно функционировать друг без друга Но при этом если установлены некоторые модули одновременно — должны открываться новые фичи. К примеру, если поставлена регистратура + бухгалтерия, то должна быть возможность из регистратуры (календаря) сразу рассчитать услугу на месте (функционал бухгалтерии). То есть, если есть функционал A и B, то должен появиться дополнительно функционал X. Если A, B и С, то функционал Х и еще функционал Y. Комбинаций модулей может быть большое количество и каждая комбинация дает все новые и новые фичи __________________________________ Прошлый продукт был подобным и каждый модуль делали отдельным бандлом. В кучи местах диспатчили ивенты и в кучи местах на них подписывались. Каждый бандл имел собственный git и отдельно писался в папке vendor. Потом через composer ставили нужные бандлы, каждый бандл подтягивал нужные ему зависимости. Данный способ был крайне неудобен (много гитов, папка src была пустая у всех) Сейчас же в best practices симфони не рекомендует писать бандлами В итоге у меня только 2 идеи: 1) снова бандлы + ивенты, cнова в папке vendor все писать 2) все писать в папке src, через конфиг отключать ненужный функционал Как можно еще?
Юра
Может как система интентов в андроиде?
Юра
Хотя это похоже на ивенты
Dima
Может как система интентов в андроиде?
увы, не знаком с этим направлением
Юра
По идее набор фич должен быть известен на этапе компиляции контейнера
Юра
Значит
Юра
Должно решаться компайлер пасами
Юра
Итоговый контейнер должен уже знать набор поддерживаемых фич
Юра
Какой-то сервис сделать, у которого можно спросить поддерживается ли такаято фича
Юра
А также скажать ему компайлер пасом что такая фича поддерживаеся
Юра
Каждый бандл смотрит на присутствие других бандлов и добавляет фичи в комайлер пасе
Юра
Может еще паттерн chain of responsibility
Алексей
Плагинами и через подписчик добавлять функционал, учу симфони только
Юра
Либо симфонийский компонент workflow как-то присобачить к этому делу
Юра
Добавлять в него шаги
Юра
Мне кажется воркфлоу подходит
Юра
Плюс его можно визуализировать
Юра
А ивенты говно спагетти код
Юра
Хер пойми что откуда делает
Юра
Стараюсь их избегать
Алексей
интересно, посмотрю для себя. Работаю с площадкой для магазинов на perl, там более 100 плагинов и как раз думаю как их перенести на симфони. И модулей оплаты около 20
Юра
Короче я бы компайлер пассами настраивал воркфлоу, а дальше простл использовал бы его
Юра
Это если набор фич не зависит от настроек каких-то в рантайме
Юра
Например от каких-то флажков в БД
Dima
https://symfony.com/doc/current/components/workflow.html этот компонент?
Юра
Да
Alexander
Привет! Можно ли как-то отключить framework: translator: на отдельных роутах, чтобы он не кидал 404, если в пути не указывать язык?
Konstantin
не соображу причем здесь транслятор. как роут задали - так он и работает. ну указывайте без {_locale}, не?
Konstantin
или там появилась какая-то магическая интеграция контроллера и переводчика, что генерит роуты сама?
Alexander
Вот такая штука
Alexander
В роутах не прописывается {_locale}
Konstantin
я знаю что такое транслятор и как он конфигурится, спасибо
Alexander
Он дальше сам язык подтягивает
Konstantin
сами по себе эти две строчки в роутер не лезут
Konstantin
я прям вот точно в этом уверен, дело в чем-то еще
Alexander
Вы правы, нашел
Alexander
В конфиге аннотаций указан префикс _locale на все контроллеры
Alexander
Спасибо!
Konstantin
у меня поэтому во всех проектах два базовых неймспейса контроллеров - локализованные и все остальные
Konstantin
первым при импорте ставится префикс, вторым - нет
Konstantin
в целом по работе с мультиязычными сайтами можно мне задавать вопросы, я уже прилично шишек в этом набрал
Alex
Привет, а кто то делал bin/console doctrine:mapping:import attribute ?
Konstantin
сколько раз ни пытался, все говно какое-то выходит :)
Alex
Не мапится с annotation нормально вроде бы
Alex
а для attribute не видит драйвера
Konstantin
можно в аннотации перегнать сначала, если так, потом ректором в атрибуты
Konstantin
если прям рилли большая база и руками долго описывать
Alex
Ну всегда же хочется найти простое решение))
Konstantin
увы, проще джуна посадить :)
Konstantin
Konstantin
если выхлоп аннотаций вас устраивает
Alex
Попробую, перегнать из аннотаций в атрибуты, помотрим что получится
Konstantin
тэгайте меня, я помогу, там быстро
Konstantin
то есть сначала генерите энтити с доктриновыми аннотациями, если там все ок, я помогу в атрибуты сконвертить
Alex
За одну команду сгенерилось bin/console doctrine:mapping:import "App\Entity\Processing" --path=src/Entity/Processing --em=processing annotation