bars80081
Новичок
Добрый день,
пытаюсь пробиться сквозь тонны документации и несколько подзавяз в этом болоте. решил здесь спросить, авось кто выложит ссылочки на конкретные решения вопроса.
в общем, имея собственное представление об организации архитектуры веб-приложения, тем не менее понимаю, что до меня это всё кем-то уже реализовывалось, конечно же более умным, да ещё и целой командой разработчиков. сейчас вклинился в разборку с symfony и в принципе много чего нравится, но пока не могу преодолеть момент "как грамотно реализовать систему репозиториев". то что там сделано на автомате не совсем прозрачно работает и трудно понять как заставить механизмы работать так, как хочется.
к примеру:
даст три запроса в БД, хотя первый и третий идентичны. ну ладно, я конечно могу тут придумать своё хранилище, складывать туда объекты и проверять их наличие. но это фактически приводит к отказу от существующей системы репозиториев и написанию своей. уверен, в доктрине или самом symfony это уже сделано, но прокопаться через доки пока не получается.
вопрос1: как правильно выглядят в symfony запросы, если требуется ленивая загрузка, чтобы лишний раз ничего не грузилось?
вопрос2: можно ли накидать в очередь на загрузку идентификаторов, чтобы они потом загрузились при первом требовании?
второй вопрос вытекает из той методики, когда при подъёме данных по одной сущности можно складировать связи на другие сущности в очередь, а затем одним махом выбрать все при первом требовании объекта.
к сожалению, чтение доков по symfony и доктрине пока пользы не приносит, поэтому рад был бы, если кто-нибудь ткнул бы в конкретное место, как это делается. или пример какой.
ещё есть чуйка, что даже если в базовом наборе симфони и доктрины подобный подход не реализован, то он наверняка уже лежит готовенький на каком-нибудь ресурсе меценатов, вроде knpbundles.com. однако, там ещё хуже свалка, чем документация в той же доктрине
и ещё есть пара смежных вопросов:
на одном ресурсе увидел формулировку, что "Зависимостей между бандлами быть не должно. Они могут зависеть от библиотек. но не от бандлов. ".
вопрос3: как быть в случае, если используются общие сущности и репозитории?
к примеру, реестр пользователей может потребоваться сразу в нескольких бандлах. дело программиста - не дублировать код, поэтому репозиторий конечно должен быть один. где ему тогда находиться?
вопрос4: как, едрить его, выглядит простой запрос SELECT COUNT(*) FROM .... ?
куда не ткну, все занимаются какой-то анархией: либо выбирают коллекцию объектов (которая может быть нафиг не нужна) и потом уже ->count() от неё даёт число, на ровном месте перенапрягая систему, либо тупо фигачат прямой SQL-запрос чуть ли не в обход подготовки запросов в PDO, то есть выкидывают в мусорку достижения доктрины и симфони
спасибо
пытаюсь пробиться сквозь тонны документации и несколько подзавяз в этом болоте. решил здесь спросить, авось кто выложит ссылочки на конкретные решения вопроса.
в общем, имея собственное представление об организации архитектуры веб-приложения, тем не менее понимаю, что до меня это всё кем-то уже реализовывалось, конечно же более умным, да ещё и целой командой разработчиков. сейчас вклинился в разборку с symfony и в принципе много чего нравится, но пока не могу преодолеть момент "как грамотно реализовать систему репозиториев". то что там сделано на автомате не совсем прозрачно работает и трудно понять как заставить механизмы работать так, как хочется.
к примеру:
PHP:
$em = $this->getDoctrine()->getManager();
$blog1 = $em->getRepository('BloggerBlogBundle:Blog')->findOneBy(array('id' => 11));
$blog2 = $em->getRepository('BloggerBlogBundle:Blog')->findOneBy(array('id' => 12));
$blog3 = $em->getRepository('BloggerBlogBundle:Blog')->findOneBy(array('id' => 11));
вопрос1: как правильно выглядят в symfony запросы, если требуется ленивая загрузка, чтобы лишний раз ничего не грузилось?
вопрос2: можно ли накидать в очередь на загрузку идентификаторов, чтобы они потом загрузились при первом требовании?
второй вопрос вытекает из той методики, когда при подъёме данных по одной сущности можно складировать связи на другие сущности в очередь, а затем одним махом выбрать все при первом требовании объекта.
к сожалению, чтение доков по symfony и доктрине пока пользы не приносит, поэтому рад был бы, если кто-нибудь ткнул бы в конкретное место, как это делается. или пример какой.
ещё есть чуйка, что даже если в базовом наборе симфони и доктрины подобный подход не реализован, то он наверняка уже лежит готовенький на каком-нибудь ресурсе меценатов, вроде knpbundles.com. однако, там ещё хуже свалка, чем документация в той же доктрине
и ещё есть пара смежных вопросов:
на одном ресурсе увидел формулировку, что "Зависимостей между бандлами быть не должно. Они могут зависеть от библиотек. но не от бандлов. ".
вопрос3: как быть в случае, если используются общие сущности и репозитории?
к примеру, реестр пользователей может потребоваться сразу в нескольких бандлах. дело программиста - не дублировать код, поэтому репозиторий конечно должен быть один. где ему тогда находиться?
вопрос4: как, едрить его, выглядит простой запрос SELECT COUNT(*) FROM .... ?
куда не ткну, все занимаются какой-то анархией: либо выбирают коллекцию объектов (которая может быть нафиг не нужна) и потом уже ->count() от неё даёт число, на ровном месте перенапрягая систему, либо тупо фигачат прямой SQL-запрос чуть ли не в обход подготовки запросов в PDO, то есть выкидывают в мусорку достижения доктрины и симфони
спасибо