【问题标题】:CakePHP 3: Multiple Order results in pagination?CakePHP 3:多订单导致分页?
【发布时间】:2015-12-23 11:18:55
【问题描述】:

需要以两种方式对内容进行排序(排序)。

1:“featured”字段可以是1或0(默认),需要显示第一个带有“1”值的内容,

->order(['featured DESC']);

2:字段“featured_start”可以是 Y-m-d DATE 或 NULL(默认),需要显示第一个带有日期的内容,而不是带有 NULL 值的内容。

像这样

-| featured | featured_start |             created |-
-----------------------------------------------------
-|        1 |     2015-12-24 | 2015-12-24 10:06:07 |-
-|        1 |     2015-12-23 | 2015-12-22 09:01:29 |-
-|        1 |           NULL | 2015-12-24 09:01:29 |-
-|        0 |           NULL | 2015-12-24 10:01:29 |-
-|        0 |           NULL | 2015-12-20 20:20:45 |-
-----------------------------------------------------

谢谢。

【问题讨论】:

  • 请将解决方案作为实际答案发布并稍后接受,以便将来的读者可以解决问题 - 谢谢。

标签: mysql cakephp orm cakephp-3.0


【解决方案1】:

已解决

->order([
    'featured DESC',
    '(CASE WHEN featured_start IS NULL THEN 1 ELSE 0 END),
    'featured_start DESC',
    'created DESC
 ]);

这将返回一个复杂的排序数据。最新的精选用户始终位于顶部,其他用户紧随其后。

当用户订阅到期时,应用程序通过 cron 在“featured”字段中设置值 0,在“featured_start”字段中设置 NULL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2016-12-29
    • 2016-10-09
    相关资源
    最近更新 更多