Doctrine ManyToMany

0

Witam. Mam sobie takie entity:

<?php
class Post {

    /**
     * @ORM\ManyToMany(targetEntity="Tag")
     * @ORM\JoinTable(name="post_tags",
     *      joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
     *  )
     **/
    private $tags;

}

Problem polega na tym, że gdy robię foreach po pobranych postach, i pobieram tagi, to tworzy się tyle zapytań ile postów w celu pobrania tagów. Czyli jak mam 100 postów, to do bazy danych leci 100 zapytań o tagi.

Nie wiem czemu, ale jak ustawie fetchMode na fetch="EAGER" , to nic to nie zmienia. Tak jakby nie działało to na ManyToMany.

Jak pobrać dla tych postów tagi? Już pomysłu mi brak. Jest opcja z joinem, ale ona odpada... bo muszę limitować wyniki. Np wyświetlić 50 postów. A jak zrobie joina to nie będę wiedzieć ile jest postów w pobranych rekordach.

0

Zobacz KnpPaginator https://github.com/KnpLabs/KnpPaginatorBundle
Może będzie rozwiązaniem Twojego problemu? Przekazujesz mu zapytanie z QueryBuider, także możesz używać JOIN, a on sam zatroszczy się o odpowiednie dodanie limit i offset.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0