Вы можете создать свой собственный класс хранения сеанса, который может выполнять все, что вам нужно, расширив CDbHttpSession
и добавив необходимые методы и свойства.Например, добавление столбца id может выглядеть следующим образом:
class MyDbHttpSession extends CDbHttpSession
{
public function setUserId($userId)
{
$db=$this->getDbConnection();
$db->setActive(true);
$db->createCommand()->update(
$this->sessionTableName,
array('userId'=>$userId), // I asume you added a column 'userId' to your session table
'id=:id',
array(':id'=>session_id())
);
}
}
Поместите свой класс в каталог компонентов приложения и добавьте его в конфигурацию приложения, установив класс компонента сеанса для новой реализации:
// ...
'components' => array(
// ...
'session' => array(
'class' => 'application.components.MyDbHttpSession',
// ...
)
// ...
)