CakePHP this-> paginate не использует поле заказа - PullRequest
2 голосов
/ 31 января 2012

Что бы я ни делал, я не могу заставить его соблюдать указанный мной порядок.

$this->paginate = array(
    'Car' => array(
        'limit' => 6,
        'order' => array(
            'Car.year' => 'desc'
        ),
        'table' => 'cars'
    )
);

Сгенерированный SQL:

SELECT `Car`.`id`, ... `Car`.`year`,... FROM `cars` AS `Car` WHERE 1 = 1 LIMIT 6

Ответы [ 3 ]

5 голосов
/ 06 февраля 2012

Оказывается, я использовал: sort в своих параметрах url. Как только я вынул это, все было хорошо:)

1 голос
/ 31 января 2012

Если у вас есть только один элемент, вам не нужно / не следует использовать массив:

//one thing
var $order = "Model.field DESC";

//multiple things
var $order = array("Model.field" => "asc", "Model.field2" => "DESC");

( за эту страницу )

0 голосов
/ 15 ноября 2013

Обратите внимание, что виртуальные поля по умолчанию игнорируются при разбивке на страницы.

См. "Управление полями, используемыми для упорядочивания" в документации Разбивка на торты 2.0 .

Пример:

$this->MyModel->virtualFields['count'] = 0;
$this->Paginator->settings = array(
        'fields' => 'COUNT(id) AS MyModel__count',
        'group' => ('MyModel.group_id'),
        'order' => array('MyModel__count' => 'DESC'),
    );
// IMPORTANT: pass sortable fields including the virtual field as 3rd parameter:
$log = $this->Paginator->paginate('MyModel', null, array('MyModel__count', 'id'));
...