使用存储在另一个表中的值来订购数据

时间:2010-09-03 14:39:56

标签: cakephp

我一直在使用cakephp,但还没有学到所有的细节,所以我可能会遗漏一些简单的东西。或者问题可能在于我的数据库结构。无论哪种方式,如果有人知道我做错了什么,请分享。

有没有办法使用存储在另一个表中的值来命令cakephp的find返回的数据?

我正在按类别创建自定义表单字段,因此当我选择要发布的特定类别时,自定义字段将添加到我的表单中。我有3个表:帖子,字段和答案。 Posts表存储帖子的基本静态信息,例如id,category_id,title和description。 Fields表存储自定义字段数据,例如category_id,field_label,字段大小等.Answers表存储为特定字段输入的值,例如post_id,field_id,value。

我正在尝试显示特定类别的帖子,并使用选择字段动态创建html表头,通过字段表中的列切换设置,还可以选择与该特定字段关联的答案并发布

我能够选择我想要的所有数据,并将所有数据分页,但我似乎无法弄清楚如何使用其中一个动态列值来排序数据。例如,如果我将year,make和model作为3个自定义字段,我想单击year列来按年份值对结果进行排序,如果我单击make列,我想按以下方式对结果进行排序品牌价值等。

我知道如何通过posts表中的特定字段(例如id或title)来排序结果,但是可以使用自定义字段进行排序吗?我是否设置了数据库和/或其他错误,如果没有,是否需要使用特定的cakephp方法或sql命令才能按自定义字段排序?我不太熟悉复杂的sql命令。

感谢。

1 个答案:

答案 0 :(得分:0)

我建议您在URL(GET参数)中传递字段名称和排序方向。因此,当您拥有表头链接时,请将其形成为链接到URL,如下所示:

http://somesite.com/pages/index/sort:customfield1/dir:asc

然后,当您在find()查询中从db中获取数据时,请将命名参数包含为可以发送以查找的order参数。

您需要确定默认的排序列和方向。也许可以在模式中使用布尔字段进行选择 - 如果没有参数发送到上面的操作,请从记录中默认设置为true的其他表中提取字段。

澄清:当用户访问给定操作时,首先您将从另一个表中提取自定义字段。然后使用这些字段(如上所述的默认值或URL中传递的命名参数)使用order参数形成对实际数据的查询。