我只是编辑主题详情。
我目前正在开发一个由4个实体组成的论坛: - 包括几个论坛的类别 - 论坛汇集了几个主题 - 主题包括几个帖子 - 包含主题答案的帖子
现在一切正常,但有一点是我无法实现的查询。
我想在论坛的主页上与子论坛的所有类别允许快速导航。 我遇到的问题是我无法检索为每个论坛执行的post dernirer,我想知道如何解决这个问题?
所以我想显示与所有这些论坛相关联的所有类别,并在实体中发布最后一篇帖子,以便每个论坛的LastPost主题。
以下是我要做的事情的概述:http://hpics.li/029d17b
我的存储库:
public function findAllCategory()
{
$qb = $this->createQueryBuilder('c')
->leftJoin('c.forum', 'f')
->addSelect('f')
->leftJoin('f.topic', 't')
->addSelect('t')
->orderBy('c.id', 'DESC');
return $qb->getQuery()
->getResult();
}
我的控制器:
$categorys = $em->getRepository('AppBundle:Category')->findAllCategory();
这是我的枝条文件:
{% for category in categorys %}
<div>
<div class="row">
<div class="col-md-12"><h2>{{ category.title }}</h2></div>
</div>
<div class="row">
{% for forum in category.forum %}
<div class="col-md-4">
<h3><a href="{{ path('forum_rubric', { 'slug': forum.slug }) }}">{{ forum.title }}</a></h3>
{{ forum.description }}
Last Post :<br/>
{% if forum.lastPost is not empty %}
<a href="{{ path('forum_topic_show', { 'slug': forum.topic.slug }) }}#message-{{ forum.lastPost.id }}">{{ forum.topic.title }}</a>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% endfor %}
我的实体:
class Category
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Forum", mappedBy="category")
* @ORM\JoinColumn(nullable=true)
*/
private $forum;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @Gedmo\Slug(fields={"title", "id"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
}
class Forum
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category", inversedBy="forum")
* @ORM\JoinColumn(nullable=false)
*/
private $category;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Topic", mappedBy="forum")
* @ORM\JoinColumn(nullable=true)
*/
private $topic;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @Gedmo\Slug(fields={"title", "id"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=255)
*/
private $description;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Post")
* @ORM\JoinColumn(nullable=true)
*/
private $lastPost;
}
class Topic
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="topic")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Forum", inversedBy="topic")
* @ORM\JoinColumn(nullable=false)
*/
private $forum;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Post", mappedBy="topic")
* @ORM\JoinColumn(nullable=true)
*/
private $post;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @Gedmo\Slug(fields={"title", "id"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Post")
* @ORM\JoinColumn(nullable=true)
*/
private $lastPost;
}
class Post
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="post")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Topic", inversedBy="post")
* @ORM\JoinColumn(nullable=false)
*/
private $topic;
/**
* @var string
*
* @ORM\Column(name="message", type="text")
*/
private $message;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
}
谢谢!