首页 > 解决方案 > 在使用分页的 cakephp 3 中查找后如何对包括格式化的结果进行排序?

问题描述

所以我有一个我正在处理的项目,您可以通过注册和登录来添加“池”,或者填写打印格式并由管理员手动添加。在结果中,我希望能够使用关联的用户名、电子邮件和合作伙伴 ID 进行排序。

我有这个代码:

    $this->paginate = [
        'sortWhitelist' => [
            'id', 'Users.username', 'Users.email', 'payed', 'Users.partner', 'created'
        ]
    ];

    $pools = $this->Pools->find('all', [
        'contain' => [
            'Users'
        ]
    ])->formatResults(function (\Cake\Collection\CollectionInterface $results) {
        return $results->map(function ($row) {
            if($row['user_id'] === -1) {
                $name = $this->Names->find('all', [
                    'conditions' => [
                        'pool_id' => $row['id']
                    ]
                ])->first();
                $row['user']['username'] = $name->name;
                $row['user']['email'] = $name->email;
                $row['user']['partner'] = $name->partner_id;
            }
            return $row;
        });
    });

    $pools = $this->paginate($pools);

所以我在 formatResults() 方法中所做的是:如果用户与 -1 用户(这是打印格式之一)相关联,则在另一个表上找到它注册并更改的名称、电子邮件和合作伙伴空白关联到正确的关联,以便我可以在页面上显示它。结果运行良好,我得到了我想要的正确文本和数据。

问题是它没有正确排序修改后的行。无论如何,我可以做到这一点吗?

标签: sortingcakephppaginationcakephp-3.0

解决方案


推荐阅读