Cakephp 3 : How to add order in queryBuilder for associative data?

标签 cakephp cakephp-3.0 query-builder

这里我有一个事件字段,它与密码有关。我需要按 download_count DESC 对所有密码进行排序。所以我尝试了下面的代码。它没有给我任何错误,但 desc 不工作。

 $event = $this->Events->get($id, [
                  'contain' => [
                      'EventPasswordAll.Passwords' => [
                          'queryBuilder' => function (Query $q) {
                              return $q->order(['download_count' => 'DESC']);
                          }
                      ]
                  ]
             ]);

我也试过

 return $q->order(['Passwords.download_count' => 'DESC']);

我收到查询

SELECT EventPasswordAll.id AS `EventPasswordAll__id`, EventPasswordAll.event_id AS `EventPasswordAll__event_id`, EventPasswordAll.password_id AS `EventPasswordAll__password_id`, Passwords.id AS `Passwords__id`, Passwords.name AS `Passwords__name`, Passwords.collection_id AS `Passwords__collection_id`, Passwords.photo_count AS `Passwords__photo_count`, Passwords.download_count AS `Passwords__download_count`, Passwords.created AS `Passwords__created`, Passwords.expires_at AS `Passwords__expires_at`, Passwords.recommended AS `Passwords__recommended`, Passwords.accepted AS `Passwords__accepted`, Passwords.user_id AS `Passwords__user_id` FROM event_password_all EventPasswordAll INNER JOIN passwords Passwords ON Passwords.id = (EventPasswordAll.password_id) WHERE EventPasswordAll.event_id in (14)

如何在 queryBuilder 中为关联数据添加顺序?

最佳答案

通过 EventPasswordAll belongsTo Passwords 的关联,passwords 表记录将通过连接检索,如查询中所示。在这种情况下,没有查询 Passwords,因此不会调用查询生成器。

您必须为 EventPasswordAll 查询生成器设置顺序,例如

$event = $this->Events->get($id, [
    'contain' => [
        'EventPasswordAll' => [
            'queryBuilder' => function (Query $q) {
                return $q->order(['Passwords.download_count' => 'DESC']);
            },
            'Passwords'
        ]
    ]
]);

关于Cakephp 3 : How to add order in queryBuilder for associative data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398462/

相关文章:

php - 添加新用户表的 mySQL 表结构

php - Symfony2 和 Doctrine2 : how to get all tags for a post?

sql - Symfony2/Doctrine 查询生成器或 SQL - 使用 LIKE 语句时首选哪种方式?

mysql - 数据库错误 PDOException 错误 : SQLSTATE[HY000] [1045]

php - 访问cake php中的复合表数据

cakephp - 字段 "created"和 "modified"在 CakePHP3.0.0(dev preview 2) 中不会自动设置

CakePHP 3 无法保存关联模型

join - Laravel 标签搜索返回包含所有标签的图像

php - php文件上传最大尺寸

php - CakePHP - SQL 查询连接