Я пытаюсь найти способ, который мог бы выдавать меньше запроса при посещении юридического лица и иметь возможность получить предыдущее и следующее сообщение от этого юридического лица , прямо сейчас, что я делаю в том же виде с Twig, получаю его следующим образом.
{% set next = next(post) %}
{% set prev = prev(post) %}
Расширение Twig
public function next($post){
$nextPost = $this->em->getRepository('App:Post')->createQueryBuilder('b')
->where('b.id > :id')->setParameter('id', $post->getId())
->andWhere('b.visible = :visible')->setParameter('visible', true)
->orderBy("b.id","asc")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult();
return $nextPost;
}
public function prev($post){
$prevPost = $this->em->getRepository('App:Post')->createQueryBuilder('b')
->where('b.id < :id')->setParameter('id', $post->getId())
->andWhere('b.visible = :visible')->setParameter('visible', true)
->orderBy("b.id","desc")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult();
return $prevPost;
}
Был бы какой-то способ получить егос меньшим количеством запросов mysql и добавлением его к объекту Post таким конкретным способом.
{{post.prev.title}}
{{post.next.title}}