/** * 根据关联表的 counterCache 选项更新统计信息 * * @param array $row */ function _updateCounterCache(&$row) { foreach (array_keys($this->links) as $linkKey) { $link =& $this->links[$linkKey]; /* @var $link FLEA_Db_TableLink */ if ($link->type != BELONGS_TO || !$link->enabled || !$link->counterCache) { continue; } $link->init(); $f = $link->assocTDG->qfield($link->counterCache); if (isset($row[$link->foreignKey])) { $fkv = $this->dbo->qstr($row[$link->foreignKey]); } else { $pkv = $this->dbo->qstr($row[$this->primaryKey]); $sql = "SELECT {$link->foreignKey} FROM {$this->qtableName} WHERE {$this->qpk} = {$pkv}"; $fkv = $this->dbo->getOne($sql); } $conditions = "{$link->qforeignKey} = {$fkv}"; if ($link->conditions) { if (is_array($link->conditions)) { $conditions = FLEA_Db_SqlHelper::parseConditions($link->conditions, $link->assocTDG); if (is_array($conditions)) { $conditions = $conditions[0]; } } else { $conditions =& $link->conditions; } if ($conditions) { $conditions = "{$link->qforeignKey} = {$fkv} AND {$conditions}"; } } $sql = "UPDATE {$link->assocTDG->qtableName} SET {$f} = (SELECT COUNT(*) FROM {$this->qtableName} WHERE {$conditions}) WHERE {$link->assocTDG->qpk} = {$fkv}"; $this->dbo->execute($sql); } }
/** * 销毁指定 id 的 session * * @param string $sessid * * @return boolean */ function sessionDestroy($sessid) { $sessid = $this->dbo->qstr($sessid); $sql = "DELETE FROM {$this->tableName} WHERE {$this->fieldId} = {$sessid}"; return $this->dbo->execute($sql); }