在CakePHP 2中定义顺序的正确方法

时间:2017-12-13 09:16:07

标签: php mysql cakephp cakephp-2.0

我有一个连接2个表的CakePHP 2(版本2.10.5)查询,假设我在Model1上查询并加入Model2和Model3。我想通过Model2.field_1和Model3.field_2订购我的数据。

当我使用这种方式时:

'order' => ['Model2.field_1', 'Model3.field_2']

或者这样:

'order' => ['Model2.field_1' => 'ASC', 'Model3.field_2' => 'ASC']

只有Model2.field_1被添加到查询的订单部分。

当我使用这种方式时:

'order' => 'Model2.field_1, Model3.field_2'

这两个字段都被添加到查询的订单部分,引用它们以及CakePHP正确解释它们的所有内容。

这是为什么?什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

前两个示例应该是在CakePHP 2中使用order的正确方法。您可以在Retrieving Your Data下的官方文档中找到使用order的示例。

所以你应该使用: -

'order' => ['Model2.field_1', 'Model3.field_2']

或者: -

'order' => ['Model2.field_1' => 'ASC', 'Model3.field_2' => 'ASC']

两者都会被解释为相同。 documentation for Models明确描述了order的可用格式。

我怀疑如果这些在您的查询中不起作用,那么此处未显示另一个问题。我相信,当Cake生成查询时,它将忽略与查询无关的订单语句。例如,如果您尝试在多个contain上进行排序,或者您正在使用分页并尝试对尚未正确配置的列进行排序(请参阅pagination ordering的文档)。< / p>