mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-09 08:02:48 +08:00
Query类改进 cache方法支持自动更新缓存数据(仅针对主键查询、更新和删除)
This commit is contained in:
@@ -1666,6 +1666,7 @@ class Query
|
|||||||
// 如果存在主键数据 则自动作为更新条件
|
// 如果存在主键数据 则自动作为更新条件
|
||||||
if (is_string($pk) && isset($data[$pk])) {
|
if (is_string($pk) && isset($data[$pk])) {
|
||||||
$where[$pk] = $data[$pk];
|
$where[$pk] = $data[$pk];
|
||||||
|
$key = 'think:' . $options['table'] . '|' . $data[$pk];
|
||||||
unset($data[$pk]);
|
unset($data[$pk]);
|
||||||
} elseif (is_array($pk)) {
|
} elseif (is_array($pk)) {
|
||||||
// 增加复合主键支持
|
// 增加复合主键支持
|
||||||
@@ -1692,6 +1693,11 @@ class Query
|
|||||||
// 获取实际执行的SQL语句
|
// 获取实际执行的SQL语句
|
||||||
return $this->connection->getRealSql($sql, $this->bind);
|
return $this->connection->getRealSql($sql, $this->bind);
|
||||||
} else {
|
} else {
|
||||||
|
// 检测缓存
|
||||||
|
if (isset($key) && Cache::get($key)) {
|
||||||
|
// 删除缓存
|
||||||
|
Cache::rm($key);
|
||||||
|
}
|
||||||
// 执行操作
|
// 执行操作
|
||||||
return '' == $sql ? 0 : $this->execute($sql, $this->getBind());
|
return '' == $sql ? 0 : $this->execute($sql, $this->getBind());
|
||||||
}
|
}
|
||||||
@@ -1813,8 +1819,12 @@ class Query
|
|||||||
$result = false;
|
$result = false;
|
||||||
if (empty($options['fetch_sql']) && !empty($options['cache'])) {
|
if (empty($options['fetch_sql']) && !empty($options['cache'])) {
|
||||||
// 判断查询缓存
|
// 判断查询缓存
|
||||||
$cache = $options['cache'];
|
$cache = $options['cache'];
|
||||||
$key = is_string($cache['key']) ? $cache['key'] : md5(serialize($options));
|
if (true === $cache['key'] && !is_array($data)) {
|
||||||
|
$key = 'think:' . $options['table'] . '|' . $data;
|
||||||
|
} else {
|
||||||
|
$key = is_string($cache['key']) ? $cache['key'] : md5(serialize($options));
|
||||||
|
}
|
||||||
$result = Cache::get($key);
|
$result = Cache::get($key);
|
||||||
}
|
}
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -1964,6 +1974,10 @@ class Query
|
|||||||
$options = $this->parseExpress();
|
$options = $this->parseExpress();
|
||||||
|
|
||||||
if (!is_null($data) && true !== $data) {
|
if (!is_null($data) && true !== $data) {
|
||||||
|
if (!is_array($data)) {
|
||||||
|
// 缓存标识
|
||||||
|
$key = 'think:' . $options['table'] . '|' . $data;
|
||||||
|
}
|
||||||
// AR模式分析主键条件
|
// AR模式分析主键条件
|
||||||
$this->parsePkWhere($data, $options);
|
$this->parsePkWhere($data, $options);
|
||||||
}
|
}
|
||||||
@@ -1974,10 +1988,17 @@ class Query
|
|||||||
}
|
}
|
||||||
// 生成删除SQL语句
|
// 生成删除SQL语句
|
||||||
$sql = $this->builder()->delete($options);
|
$sql = $this->builder()->delete($options);
|
||||||
|
|
||||||
if ($options['fetch_sql']) {
|
if ($options['fetch_sql']) {
|
||||||
// 获取实际执行的SQL语句
|
// 获取实际执行的SQL语句
|
||||||
return $this->connection->getRealSql($sql, $this->bind);
|
return $this->connection->getRealSql($sql, $this->bind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检测缓存
|
||||||
|
if (isset($key) && Cache::get($key)) {
|
||||||
|
// 删除缓存
|
||||||
|
Cache::rm($key);
|
||||||
|
}
|
||||||
// 执行操作
|
// 执行操作
|
||||||
return $this->execute($sql, $this->getBind());
|
return $this->execute($sql, $this->getBind());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user