Я обычно использую изменения пагината на лету, хе-хе.Вот пример кода.
$this->paginate = array(
'conditions' => array('Recipe.title LIKE' => 'a%'),
'limit' => 10 );
$data = $this->paginate('Recipe');
Здесь вы можете прочитать больше о настройке контроллера для нумерации страниц.Но если у вас уже есть связи в модели (hasMany и т. Д.), Данные автоматически выбираются, если вы ставите рекурсивную единицу без необходимости содержать (вы все равно можете использовать ее для получения только тех данных, которые вам нужны).Пример того, как он будет выглядеть для вас:
$this->paginate = array(
'conditions' => array(
'User.Status' => 'Invisible',
'User.Enabled' => true
),
'contain' => array('Comment' => array(
'conditions' => array('Comment.Status' => 'Active')
)),
'recursive' => 1,
'order' => 'User.DateCreated DESC'
);
$data = $this->paginate('User');
Это то, что вы положили в свой пост.Если вы вставите SQL-запрос того, что вы хотите, я могу помочь вам больше.Кроме того, попробуйте проверить вывод sql, чтобы знать, что-то не так в условиях.если у вас нет и вы не знаете, как поместить вывод sql, просто сделайте это.
var_dump($this->User->getQuery(
'conditions' => array(
'User.Status' => 'Invisible',
'User.Enabled' => true,
'Comment.Status' => 'Active'
),
'contain' => 'Comment',
'order' => 'User.DateCreated DESC'
));
Надеюсь, это поможет вам, если нет, оставьте мне комментарий.
РЕДАКТИРОВАТЬ : Это то, что вам нужно сделать, чтобы получить то, что вы хотите.: D Измените таблицу и условия в соответствии с вашими потребностями.
$this->paginate = array(
'conditions' => array(
'User.Status' => 'Invisible',
'User.Enabled' => true
),
'joins' => array(
array(
'table' => 'name_of_comment_table',
'alias' => 'Comment',
'type' => 'inner',
'conditions' => array(
'Comment.user_id = User.id',
'Comment.Status' => 'Active'
)
)
),
'contains' => array('Comment'),
'group' => 'User.id',
'recursive' => 1,
'order' => 'User.DateCreated DESC'
);
$data = $this->paginate('User');