【问题标题】:Correct way to define order in CakePHP 2在 CakePHP 2 中定义顺序的正确方法
【发布时间】:2017-12-13 09:16:06
【问题描述】:

我有一个连接 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 可以正确解释它们。

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

【问题讨论】:

  • 您能否添加您的查询,以及模型之间的关联。这会很有帮助

标签: php mysql cakephp cakephp-2.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 生成查询时,它会忽略与查询无关的订单语句。例如,如果您尝试在 has-many contain 上进行排序,或者您正在使用分页并尝试对未正确配置的列进行排序(请参阅 pagination ordering 的文档)。

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多