Cakephp нумерация страниц в случайном порядке? - PullRequest
5 голосов
/ 12 января 2012

Хорошо, я посмотрел и посмотрел, но, кажется, нигде ничего не могу найти по этому поводу.У меня есть отображение результатов, которые разбиты на страницы красиво, но в настоящее время они отображаются в порядке возрастания.Я бы хотел, чтобы они отображались в случайном порядке.Вот мой текущий код контроллера:

public function condos() {          

$this->paginate['Unit']=array(
        'limit'=>9,
        'contain'=>array(
                'User'=>array(
                    'id', 'user_name', 'area_code', 'exchange', 'sln', 'email'),
                'Complex'=>array('id','complex_name', 'realname', 'photo1','photo2','photo3','photo4','photo5', 'complex_website')
                    ),
        'conditions'=>array(
                'Unit.type'=>array('condo', 'rentalco'),
                'Unit.active'=>1)   
    );
$data = $this->paginate('Unit');
$this->set('allcondos', $data);


}

Ответы [ 2 ]

6 голосов
/ 12 августа 2012

Для любого, кто найдет это - реальный ответ - сгенерировать начальное число (число от 0 до 1) и сохранить его в сеансе до того, как потребуется сортировка RAND()beforeFilter() контроллера).Затем:

$this->paginate['order'] = sprintf('RAND(%f), $this->Session->read('seed'));

Это сохраняет начальное значение RAND() между вызовами на страницу и сохраняет общий порядок результатов между запросами.

0 голосов
/ 12 января 2012

Мне кажется, это хорошо работает на CakePHP 2:

$this->paginate = array(
    'order' => 'RAND()'
);

Это использует функцию MySQL RAND(), которую Cake просто передает в базу данных.

РЕДАКТИРОВАТЬ: Теперь, когда я думаю об этом, это не очень хорошая идея, потому что порядок не поддерживается между страницами. Я не могу придумать, как удачно выбраться из головы, чтобы рандомизировать порядок и поддерживать непрерывность между страницами. Может быть, если бы вы перетасовали элементы на странице с помощью JavaScript?

...