在写一个论坛,在文章回复中,我想要的是多层嵌套,就是俗称的盖楼回复。
目前能想到解决方法如下
一次从回复表中取出所有该文章的回复。
然后通过递归输出一个多维数组。
然后在页面中也是递归输出html
我想问问更好的方法是什么。因为一次取所有回复,然后递归,当数据量大了可能并不是很好,尤其是还要分页。
回复表中的主要字段是: 评论唯一ID,评论所属文章,评论的父ID
想过根据页码从数据库中只取当前页下的评论,这时候遇到的问题如下:
设每页10条回复。
若第一条回复有9条子评论,sql语句是 SELECT * FROM comments WHERE article_id = 1 LIMIT 0,10
这样之后 评论第一页只有一条回复父回复。
我的表达不知道你能不能理解。
1
lxrmido 2015-05-09 15:14:32 +08:00
|
2
geeglo OP @lxrmido 简单看了一下,A站是根据页码只输出当前页的数据。然后渲染页面是用js做的。
这样服务器上少一次递归。 这样做的话,我不知道如何才能 准确取出数量正确的 根评论,和他的子评论,用最少的sql语句。 |
3
yangmls 2015-05-09 15:33:09 +08:00 via Android
拆分成两条语句,第一条取父评论,第二条用in取子评论
我开发一般会图省事,用ORM的 relation,实际生成11 条语句,等遇到性能问题的时候改成贪婪模式,变成两条,然后如果性能还有问题,ORM 加一层缓存,基本就解决了 |
5
mawing 2015-05-09 16:10:33 +08:00
|