讨论区中,文章回覆中的「#楼层」怎样处理最好?

一开始我是在帖子的sql 表中加入了 sort

每次回帖时都会

$post->sort = Post::where('topic_id',$id)->max('sort')+1;
...
$post->save();

后来则发觉,当删除时会发现问题

比如删除#2 #3

就会直接显示

#1
#4
#5

暂时缓解的方法

那我想到直接用$loop->index

我是一页15个帖子, 所以就这样来计算了一下

<span>
@if((request()->get('page')>0))
    #{{$loop->index+1+(request()->get('page')*15)-15}}
@else
    #{{$loop->index+1}}
@endif
</span>

用以上代码是ok了,同时也不用使用SQL来记录楼层,
但问题来了,是不是很费劲吗?一页15层要计算15次很消耗多馀的资源?

有没有更好的方法建议一下?

是否要做成,每次删帖时,都自动把sort 补齐/往前进一位??

感觉是不是用SQL在做比较好?
毕竟浏览的人操作删除动作的人会多很多很多?

如果真的这样比较好的话,在Laravel中又该要怎样做?

望各位有经验的前辈指点一下

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
laravel_peng
最佳答案
1. 问题分析 :
  1. 你的问题是表数据记录了 sort 值,sort 值就是楼层数。
  2. 删除了其中某一个楼层,再次展示数据时,页面中会出现楼层号不连续。
2. 解决方法
  1. 其实你说了一种方法就是,使用前台。循环渲染数据 索引值 计算显示楼层。
  2. 还有就是在删除那一刻,需要将此条数据之后的所有数据(比方说 id > n)的楼层数 sort 批量加1(也就是批量更新,或批量自增)。不过这个要发生在数据没有出现断层的时候。
  3. 如果数据已经断层,还需要你查询所有数据,将楼层数重新循环更新一下。
2年前 评论
SS (楼主) 2年前
火元素魔法师 2年前
SS (楼主) 2年前
讨论数量: 10

缺楼层不是很正常,看早期的贴吧

2年前 评论
ononl 2年前
laravel_peng
1. 问题分析 :
  1. 你的问题是表数据记录了 sort 值,sort 值就是楼层数。
  2. 删除了其中某一个楼层,再次展示数据时,页面中会出现楼层号不连续。
2. 解决方法
  1. 其实你说了一种方法就是,使用前台。循环渲染数据 索引值 计算显示楼层。
  2. 还有就是在删除那一刻,需要将此条数据之后的所有数据(比方说 id > n)的楼层数 sort 批量加1(也就是批量更新,或批量自增)。不过这个要发生在数据没有出现断层的时候。
  3. 如果数据已经断层,还需要你查询所有数据,将楼层数重新循环更新一下。
2年前 评论
SS (楼主) 2年前
火元素魔法师 2年前
SS (楼主) 2年前

排序也可以用 窗口函数 的吧。

2年前 评论
SS (楼主) 2年前

楼层本就是通过分页信息算出来的。 加加减减,这点运算对系统来说是可忽略不计的消耗 最后不要在视图里去计算,会更好一点。 对楼层有强需求的,反而是,删除也不能改变楼层的抢楼帖,这需要额外的表和处理方式。

2年前 评论
SS (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!