Я выполнил действие в контроллере, чтобы отобразить пользователей, и у меня есть флажок, если пользователь хочет просматривать только онлайн-пользователей. Для этого я использую таблицу UserLogin и проверяю, был ли пользователь онлайн в течение последних получаса.
Код: Выделить всё
$this->User->bindModel(array(
'hasMany' => array(
'UserLogin' => array(
'className' => 'UserLogin',
'conditions' => array(
'UserLogin.lastaction_timestamp > DATE_SUB(NOW(), INTERVAL 30 MINUTE)',
'UserLogin.logout_timestamp is null',
),
)
)
), false);
$this->{$this->modelClass}->data[$this->modelClass] = $this->passedArgs;
if ($this->{$this->modelClass}->Behaviors->attached('Searchable')) {
$parsedConditions = $this->{$this->modelClass}->parseCriteria($this->passedArgs);
} else {
$parsedConditions = array();
}
$parsedConditions = array_merge($parsedConditions,array('User.status' => '1'));
$this->Paginator->settings[$this->modelClass]['contain'] = array( 'UserDetail.first_name',
'UserDetail.last_name', 'UserDetail.institution_type', 'UserLogin'
);
$this->Paginator->settings[$this->modelClass]['conditions'] = $parsedConditions;
$users = $this->paginate();
$this->set(compact('users'));
Я пытаюсь избавиться от строк с пользователями без каких-либо результатов в UserLogin. Я думал использовать поведение Contain, но это не сработало. Тоже думал использовать Hash, но тогда уничтожу нумерацию страниц.
Подробнее здесь: https://stackoverflow.com/questions/285 ... hasmany-in