Использование Cake PHP-метода find для ограничения количества записей в конкретной модели - PullRequest
1 голос
/ 07 февраля 2012

У меня есть следующая функция поиска:

$this->MyModel->find('all', array('conditions' => array('id' => $id)));

, которая возвращает массив этой формы

Array
(
    [Model1] => Array
        (
            [Model1] => Array
                (
                    ...
                    ...
                )
        )
    [Model2] => Array
       (
            [0] => Array
                (
                    ...
                    ...
                )
            [1] => Array
                (
                    ...
                    ...
                )
            [2] => Array
                (
                    ...
                    ...
                )
            ...
            ...
            ...

            )
)

Как мне изменить find все, чтобы ограничить количество элементоввторая модель извлекается (Model2)?

Я могу добавить conditions => array( 'limit' => 10 ), но это ограничивает количество элементов внешнего массива - не Model2, то есть второй вложенный массив!

Любойидеи?Спасибо:).

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Здесь вы должны использовать сдерживаемое поведение торта, чтобы ограничить записи вашей второй модели.Вот что вы можете сделать, используя для этого встраиваемый объект.

    $this->Model->contain = array('Model2' => array('limit' => 10));
    $this->Model->find('all', array('conditions' => $conditions));

Теперь вы получите максимум 10 записей из Model2.

1 голос
/ 07 февраля 2012

Если это то, что вы хотите делать каждый раз, когда выполняете поиск ('all'), вы можете использовать параметры 'limit' в массивах ассоциаций в модели:

public $hasMany = array(
    'OtherModel' => array(
        'className' => 'OtherModel',
        'foreignKey' => 'model_id',
        'limit' => 10
    )

В качестве альтернативы, вы также можете изменить это значение непосредственно перед вызовом метода find ():

$this->MyModel->hasMany['OtherModel']['limit'] = 10;
$this->MyModel->find('all', array('conditions' => array('id' => $id)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...