Мне нужно установить порядок разбиения на страницы моего регистра на основе поля ($results[$key]['Movimento']['status']
), созданного в результате обратного вызова afterFind.Cakephp pagination custom order
afterFind:
public function afterFind($results, $primary = false) {
foreach ($results as $key => $val) {
if(isset($val['Movimento']['data_vencimento'])) {
$data = $val['Movimento']['data_vencimento'];
$dtVc = strtotime($data);
$dtHj = strtotime(date('Y-m-d'));
$dtVencendo = strtotime("+7 day", $dtHj);
if ($dtVc < $dtHj) {
$results[$key]['Movimento']['status'] = 'vencido';
} elseif ($dtVc <= $dtVencendo) {
$results[$key]['Movimento']['status'] = 'vc15dias';
} else {
$results[$key]['Movimento']['status'] = 'aberto';
}
}
if(isset($val['Movimento']['data_pagamento'])) {
$results[$key]['Movimento']['status'] = 'quitado';
}
}
return $results;
Разбивка:
$options = array(
...
'order' => array('Movimento.status' => 'ASC')
);
$this->controller->paginate = $options;
$movimentos = $this->controller->paginate('Movimento');
Я знаю, что это не работает, потому что поле создается после вызова Paginator.
Могу ли я заставить его работать?
Он работает около 95% за то, что мне нужно, потому что «data_pagamento» должен быть ASC для работы, но нормально. Правильный код: 'order' => array ('Movimento.data_pagamento' => 'ASC', 'Movimento.data_vencimento' => 'ASC') – Ique