CakePHP Pagination с условиями на has_many

Поэтому у меня есть таблица User и таблица History с User hasMany Histories, и я пытаюсь реализовать разбиение на страницы в таблице пользователя.

Моя проблема в том, что у меня есть поиск, и некоторые вещи, которые можно искать, – это вещи в таблице «История». Есть ли способ фильтровать результаты разбивки на страницы на основе данных в таблице, связанной с hasMany? Контейнер, который поначалу казался решением, допускает такую ​​фильтрацию, но только в поиске связанных данных, а не самих записей (если я что-то не хватает?)

Кто-нибудь должен был решить это раньше?

Поскольку это отношения hasMany, это означает, что Cake должен будет сделать 2 отдельных запроса: 1 в таблице пользователей и один в таблице историй, чтобы получить все ассоциации. Поскольку данные Истории не извлекаются до второго запроса, ваш 1-й запрос не может быть отфильтрован через условия WHERE для полей, найденных в модели History.

Чтобы решить эту проблему, вы можете сделать одно из двух:

  1. Выполните разбиение на страницы по истории с помощью Containable (поскольку History принадлежит пользователю, что означает только 1 запрос будет выполнен).

  2. Выполняйте разбивку на страницы на пользователе так, как вы уже делаете, за исключением того, что вы используете ad-hoc для участия в истории, так что она больше не имеет отношения hasMany.

например:

$this->User->bindModel(array('hasOne' => array('History'))); $this->paginate['User']['contain'][] = 'History'; $this->paginate('User', array('History.some_field' => 'some_value'));