Как сортировать в том числе отформатированные результаты после поиска в cakephp 3 с помощью paginate? - PullRequest
0 голосов
/ 11 июня 2018

Итак, у меня есть проект, в котором я работаю над тем, чтобы вы могли добавить «пул» путем регистрации и входа в систему или заполнения печатного формата, а администратор добавил его вручную.По результатам я хочу иметь возможность сортировки, используя имя пользователя, адрес электронной почты и идентификатор партнера.

У меня есть этот код:

    $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);

Итак, что я делаю в форматеResults() метод: если пользователь связан с пользователем -1 (который является одним из печатных форматов), найдите в другой таблице имя, адрес электронной почты и партнера, для которого он зарегистрирован, и измените пустые ассоциации на правильные, чтобы яможете отобразить его на странице.Результаты работают нормально, и я получаю правильный текст и данные, которые мне нужны.

Дело в том, что он неправильно сортирует измененные строки.В любом случае, я могу этого добиться?

...