За последние 24 часа нас посетили 19194 программиста и 1646 роботов. Сейчас ищут 998 программистов ...

Doctrine2 OneToMany частичная выборка

Тема в разделе "Прочие вопросы по PHP", создана пользователем mkramer, 24 сен 2013.

  1. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Изучаю Doctine 2, смотрел официальную документацию, прочитал книгу Ромера, но один вопрос остался. Вот у меня есть такая сущность (прямо из книги, ничего не придумывая долго):
    Код (Text):
    1.  
    2. /**
    3. * @Entity
    4. * @Table(name="users")
    5. */
    6. class User
    7. {
    8.    /**
    9.      * @OneToMany(targetEntity="Entity\Post", mappedBy="user")
    10.      */
    11.    private $posts;
    12.  
    13.  // [..]
    14. }
    Ну, и соответственная сущность Post, естественно. Теперь, если я обращусь, ну к примеру через геттер, али ещё как непосредственно к полю $posts экземпляра User, будут загружены сразу все посты этого несчастного пользователя, правильно? А вот если мне нафиг не нужны все его посты, мало ли сколько он наваял, насколько я понял, я уже не могу использовать поле Posts, а должен каким-то образом реализовывать запрос DQL с ограничением лимитов. Я прав? Т.е. фактически само по себе поле $posts имеет очень ограниченное значение, и в реальности и не особо нужно? Запросы я и без него напишу...
     
  2. d1gi

    d1gi Активный пользователь

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    да, для постраничности тут можно в репозитории постов описать метод что-то типа getFindPostsByUserQuery(UserInterface $user), там внутри будет DQL, но будет возвращаться именно query, а не коллекция, затем этот query можно затолкать в Pagerfanta.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    надеюсь когда-нибудь я пойму смысл такого подхода...
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну вот и я пытаюсь. Мне просто скоро предстоит достаточно крупный проект, я уже точно решил, что буду там использовать ZF2, а вот буду ли использовать Doctrine - ещё думаю. Главный смысл здесь - уйти от SQL, а оперировать только понятиями объектов. Но результатирующий код меня пока не сильно привлекает
     
  5. d1gi

    d1gi Активный пользователь

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    с кодом всё в порядке будет, большую часть запросов можно запаковать в репозитории и оперировать в сервисах только методами.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну так может просто засунуть SQL куда-то глубоко в объект, но написать запрос без гемороя? =)
     
  7. d1gi

    d1gi Активный пользователь

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    например? ;)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну это уже зависит от желаемой архитектуры проекта видимо. но явно не в юзера.
     
  9. d1gi

    d1gi Активный пользователь

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    понятно :)) в общем в доктрине всё давно придумано до нас :) надо только изучить и пользоваться :) там не так много вещей, которые она действительно не позволяет сделать...
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я хотел бы знать, каким будет решение.
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    ТЗ мне обещали составить ко 2 октября, я отпишусь в эту тему, когда начну делать проект