предотвратить dql от объединения сущностей - PullRequest
0 голосов
/ 07 мая 2018

Я хочу написать DQL-запрос, который выберет запись и присоединится к другой организации

вот мой код

 $dql = '
                        SELECT p , h ,t ,m 
                        FROM App:Post p 
                        LEFT JOIN p.mentions m
                        LEFT JOIN p.tags t 
                        LEFT JOIN p.file h 
                        WHERE p.user
                        IN (
                            SELECT f FROM App:User u
                            JOIN u.followers f
                            WHERE u.id = :uid
                           )
                        OR p.user = :uid ';

        $query     = $this->getEntityManager()
            ->createQuery($dql)
            ->setMaxResults(1)
            ->setParameters(['uid' => $user->getId()]);
        $paginator = new Paginator($query, $fetchJoinCollection = true);

но проблема в циклической ссылке, например, Post -> Tags -> Posts, которая используется в сериализации и заставляет проект зависнуть и показывает пустую страницу.

вот экспорт вывоза

как я могу справиться с этим, кроме использования цикла посмотреть на PersistentCollection

ОБНОВЛЕНИЕ ::

вот мой код сериализатора

  $posts= [];
        foreach ($paginator as $post) {

            $posts[] = $post;

        }

        $serializer = SerializerBuilder::create()->build();
        $gifts      = $serializer->toArray($posts);

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать группы сериализации, чтобы избежать проблем с циклическими ссылками.По сути, это позволяет вам определить группу (или несколько) для каждого свойства, затем вы можете запросить сериализацию только определенных групп (групп).

Для собственного сериализатора Symfony:

Для JMS: https://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...