相信很多人都用过无限级分类,这种分类方式简单高效,管理起来也比较方便,不过小high今天在进行新一轮的尝试的时候发现了一个之前没有遇到过的BUG。
之前我们在用的时候很多时候sql语句是这么写的
|
1
|
select *,concat(path, '_', id) as ids from cate order by ids
|
但是今天出现了一个小bug我把数据表的状态发出来
相信眼睛比较敏锐的朋友们已经发现,如果遇到10以上的顶级分类的时候,就会出现这种情况,这个时候的主要问题就是mysql的排序并不是自然排序,而是用ascii码进行的二进制排序,所以我们要将它变成自然排序
|
1
2
3
|
select *,concat(path, '_', id) as ids from cate order by ids*1
select *,concat(path, '_', id) as ids from cate order by ids+0
|
通过百度搜索并没有直接mysql自然排序的结果,只是找到这个看起来挺奇怪但是又非常凑效的一个东西,小high亲测,非常好使
哎 不得不说一个小小的问题,又被我发现了一个大问题,就是分隔符的问题,又花了我一个早上的时间来想通这个事儿,
分隔符要用 ‘-’,不要用下划线 ‘_’
注::转载至小High博客 » [小high原创]无限级分类中的一个高级BUG

本文详细介绍了在使用无限级分类时遇到的排序问题,并提供了通过乘以1或加0来实现自然排序的解决方案。同时强调了分隔符选择的重要性,推荐使用‘-’而非下划线‘_’。

3317

被折叠的 条评论
为什么被折叠?



