Skip to content

Order

Orden en CakePHP

A continuación se presenta el código para gestionar el orden en CakePHP:

if ($this->request->query['sort'] != null && $this->request->query['direction'] != null) {
$sort = $this->request->query['sort'];
$direction = $this->request->query['direction'];
} else {
$sort = 'ResearchGroups_name_translation.content';
$direction = 'ASC';
}

Es importante tener en cuenta que si se desea ordenar por otros campos además del pasado explícitamente en un objeto de consulta, se deberá combinar ambos métodos:

$this->paginate['sortWhitelist'] = $this->Users->schema()->columns() + ['Cities.id', 'Cities.name'];
$query = $this->Users->find()
->contain('Cities')
->order(['Cities.name' => 'DESC']);
$users = $this->paginate($query);

En el siguiente fragmento, se muestra cómo manejar el orden en CakePHP:

if (isset($this->request->query['sort']) && isset($this->request->query['direction'])) {
$sort = $this->request->query['sort'];
$direction = $this->request->query['direction'];
} else {
$sort = 'ResearchGroups_name_translation.content';
$direction = 'ASC';
}
if (empty($type)) {
$type = 'active';
$researchGroups = $this->paginate(
$this->ResearchGroups->find('all', [
'order' => [$sort => $direction],
'conditions' => [
'OR' => [
'end_date >' => date('Y-m-d'),
'end_date is null',
]
]
])
);
} else {
$type = 'all';
$researchGroups = $this->paginate(
$this->ResearchGroups->find('all', [
'order' => [$sort => $direction]
])
);
}