Как я могу ограничить поиск определенным номером в CakePHP? - PullRequest
6 голосов
/ 14 мая 2009

У меня есть модель пользователя, которая выдает мне последних пользователей в качестве вывода. Как я могу ограничить запись только выводом мне 200 записей вместо всех пользователей в базе данных?

Ответы [ 6 ]

13 голосов
/ 14 мая 2009

Согласно документации , вторым аргументом метода find() является массив $params.

Одним из возможных значений, передаваемых в этом массиве, является ключ limit. Таким образом, вы можете сделать следующее:

$users = $this->User->find('all', array('limit' => 200));
8 голосов
/ 14 мая 2010

"у меня есть это как массив ('limit' => 21, 'page' => 1) для подкачки 21 пользователя на одной странице. только одна страница ... в этом случае, как ограничить наряду с надлежащей нумерацией страниц ?? - Аноним 14 мая 2009 г. в 7:22 "

да, вы можете использовать помощника по разбивке страниц cakePHP, как кто-то упоминал. Но могут быть некоторые случаи, когда вы хотите сделать свою собственную нумерацию страниц или просто ограничить количество записей, извлекаемых за вызов. Для чего это стоит вот как я справился с одной такой ситуацией.

Скажем, например, что вы хотите получить определенное количество записей на странице, затем: $ start = 0; -> это для того, чтобы начать извлекать записи, начиная с первой. Если вам нужно сказать, например, начать с 31-го, то $ start = 30;

Итак, $ start = 0; $ длина = 20; // мы собираемся получить 20 записей, начиная с первой записи

И код будет что-то вроде:

// To retrieve a number of Products per page
            $products = $this->Product->find('all', array(
                                            'order' => 'product_number ASC',
                                            'limit' => $start.','.$length,
                                            'recursive' => -1
                                            )
                                        );
3 голосов
/ 14 мая 2009

Не разбивайте на страницы с помощью find ().

Торт Нумерация страниц: http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html

2 голосов
/ 06 октября 2014
array(
  'conditions' => array('Model.field' => $thisValue), //array of conditions
  'recursive' => 1, //int
  //array of field names
  'fields' => array('Model.field1', 'DISTINCT Model.field2'),
  //string or array defining order
  'order' => array('Model.created', 'Model.field3 DESC'),
  'group' => array('Model.field'), //fields to GROUP BY
  'limit' => n, //int
  'page' => n, //int
)

Limit * page = 200 установите ваши значения в соответствии с вашим удобным просмотром на страницах. Это может помочь

1 голос
/ 16 сентября 2011

Вы также можете попробовать это

$results = $this->Model->find('all', 
       array('limit'=>10, 
             'order'=>array('date DESC')));
0 голосов
/ 15 мая 2009

открыть файл модели пользователя и сделать следующее:

вам нужно будет изменить свойство limit в переменной отношения с именем

var $ hasMany = array ('Abus' => массив ('className' => 'Abus', 'foreignKey' => 'user_id', «зависимый» => ложь, «условия» => '', 'fields' => '', 'order' => '', 'limit' => '200', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => ''));

ИЛИ вы также можете попробовать это ...

в вашем контроллере пользователя установите $ paginate таким образом.

var $paginate = array('limit' => 200);

Количество записей будет ограничено 200 теперь, где бы вы ни использовали пагинацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...