CakePHP 3:多订单导致分页?

Posted

技术标签:

【中文标题】CakePHP 3:多订单导致分页?【英文标题】:CakePHP 3: Multiple Order results in pagination? 【发布时间】: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 |-
-----------------------------------------------------

谢谢。

【问题讨论】:

请将解决方案作为实际答案发布并稍后接受,以便将来的读者可以解决问题 - 谢谢。 【参考方案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。

【讨论】:

以上是关于CakePHP 3:多订单导致分页?的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp 分页按计算字段排序( COUNT )

为 belongsToMany CakePHP 3 分页的条件

CakePHP 模型:可包含的 COUNT(*)

cakephp 3.3:模型在url中时的分页和排序错误

使用 CakePHP 分页助手的引导分页

Cakephp分页问题