大家好我有关于cakephp分页和排序的问题
我已将分页视图设置为流程
SR.NO |名字|地址|电话| ...
SR.NO是一个简单的计数器,在foreach循环中用于显示数据而不是数据库ID
以下链接显示了我的SR.NO是如何创建的
CakePHP: Numbered Paginated Results
到现在为止一切都很好......
现在我需要根据SR.NO对结果进行排序,但不知道如何实现这一目标......
感谢我的一些亮光......
答案 0 :(得分:0)
如果我理解正确,S.NO只是结果中的行号,并添加了PHP。
如果查询不对结果进行排序且S.NO与数据库中的数据无关,则无法对此列进行排序,和这样做没有任何意义。
没有'ORDER BY xxx'的SQL查询将以随机顺序返回结果; SQL Server UNION - What is the default ORDER BY Behaviour
基本上,这意味着每次运行查询时,结果都可能以不同的顺序返回。
您要添加的S.NO是基于查询结果返回的顺序,但由于此顺序为 random ,因此每次查看同一页面时,< em>相同的记录可以获得另一个位置,因此另一个S.NO
指定一列以对结果进行排序,以便每次结果的顺序一致。如果需要,您还可以反向排序顺序。 S.NO仍然可以使用,但纯粹用于演示
或者,使用SQL(Get row position in MYSQL query)计算行位置。但是,即使在这种情况下,行号也是基于结果中每行的位置。如果没有 ORDER BY
,则行号仍为“随机”,并且每次执行查询时,同一行可能会获得不同的S.NO /行号。
最后一个选项是使用JavaScript排序(正如其他人建议的那样)。 然而,也是因为'随机'顺序,这只能对页面上可见的记录进行。如果您正在使用分页(y的第x页),则对整个数据库表进行排序将需要对数据库进行新查询(由于整个“随机”问题而无法对其进行排序)