5.0.0 - 严重 - 已处理
$id=1;
User::get($id,true);生成的缓存key是固定的.User::where('id'=>$id)->update($data); //模型定义了update_time自动写入更新生成的缓存key都不一样,导致无法自动更新缓存.protected function getCacheKey($value, $options, $bind = [])
{
if (is_scalar($value)) {
$data = $value;
}
if (isset($data)) {
return 'think:' . (is_array($options['table']) ? key($options['table']) : $options['table']) . '|' . $data;
} else {
return md5(serialize($options) . serialize($bind));
}
}调试代码判断的结果是,getCacheKey方法在查询和更新时判断第一个参数$value,是类似['id','=','3']的值,因为不是标量,会进入第二个判断序列化后返回,但是第二个参数option中因为更新了update_time,每次option序列化都是不一样的,所以返回的key也不一样.tp5.0正常返回,原因是判断$value是标量,返回的key值固定.
