我想从数据库中检索新闻和评论表。这些表关联正确。 问题是我也想订购评论表。一切正常,包括排序(使用 ASC 和 DESC)。
PHP 代码
$query = $doctrine->getManager()
->createQuery(
'SELECT news FROM BlogAdminBundle:News news
JOIN news.comments comments
WHERE news.id = :id
AND news.date_active < :date ORDER BY comments.dateAdd DESC'
)->setParameters(array('date' => new \DateTime(), 'id' => $news_id));
$fetched_news = $query->getSingleResult();
return array('fetched_news' => $fetched_news);
Twig 代码
{% for comment in fetched_news.comments %}
//displaying data
{% endfor %}
我知道我可以分别检索新闻表和评论表,但将其包含在一个请求中是更好的主意。
有人想帮忙吗?:)
最佳答案
这可能有效,假设...
新闻实体看起来像这样:
/**
* News
*
* @ORM\Table(name="News")
* @ORM\Entity()
*/
class News {
...
/**
* @ORM\OneToMany(targetEntity="comment", mappedBy="news", cascade={"persist", "remove"})
* @ORM\OrderBy({"dateAdd" = "DESC"})
*/
protected $comments;
...
}
Controller 包括$news = $em->getRepository("YourBundle:News")->find($id);
模板包括(假设新闻实体中名为 item
的列和评论实体中名为 comment
的列):
{% for event in news %}
{{ event.item }}
{% for piece in event.comments %}
{{ piece.comment }}
{% endfor %}
{% endfor %}
关于php - 原则 2 - 如何将 SQL ORDER 连接到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164187/