Example #1
0
 /**
  * @param int|string $sessionId
  *
  * @return bool
  */
 public function destroy($sessionId)
 {
     $key = $this->keyPrefix . $sessionId;
     $startTime = microtime(true);
     $result = $this->connection->delete($key);
     $this->newRelicApi->addCustomMetric(self::METRIC_SESSION_DELETE_TIME, microtime(true) - $startTime);
     return true;
 }
Example #2
0
 /**
  * 删除数据
  * @access public
  * @param mixed $options 表达式
  * @return mixed
  */
 public function delete($options = array())
 {
     $pk = $this->getPk();
     if (empty($options) && empty($this->options['where'])) {
         // 如果删除条件为空 则删除当前数据对象所对应的记录
         if (!empty($this->data) && isset($this->data[$pk])) {
             return $this->delete($this->data[$pk]);
         } else {
             return false;
         }
     }
     if (is_numeric($options) || is_string($options)) {
         // 根据主键删除记录
         if (strpos($options, ',')) {
             $where[$pk] = array('IN', $options);
         } else {
             $where[$pk] = $options;
         }
         $options = array();
         $options['where'] = $where;
     }
     // 根据复合主键删除记录
     if (is_array($options) && count($options) > 0 && is_array($pk)) {
         $count = 0;
         foreach (array_keys($options) as $key) {
             if (is_int($key)) {
                 $count++;
             }
         }
         if ($count == count($pk)) {
             $i = 0;
             foreach ($pk as $field) {
                 $where[$field] = $options[$i];
                 unset($options[$i++]);
             }
             $options['where'] = $where;
         } else {
             return false;
         }
     }
     // 分析表达式
     $options = $this->_parseOptions($options);
     if (empty($options['where'])) {
         // 如果条件为空 不进行删除操作 除非设置 1=1
         return false;
     }
     if (is_array($options['where']) && isset($options['where'][$pk])) {
         $pkValue = $options['where'][$pk];
     }
     if (false === $this->_before_delete($options)) {
         return false;
     }
     $result = $this->db->delete($options);
     if (false !== $result && is_numeric($result)) {
         $data = array();
         if (isset($pkValue)) {
             $data[$pk] = $pkValue;
         }
         $this->_after_delete($data, $options);
     }
     // 返回删除记录个数
     return $result;
 }