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

一开始我是在帖子的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中又该要怎样做?

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

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

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

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

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

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年前

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