/** * 根据$bulider条件解析获取已缓存在PHP的数据 * @param array $bulider * @param array $id_cache_data * @return boolean 是否需要再次读取 */ protected function _get_id_field_cache_data(&$bulider, &$id_cache_data) { $not_need_find = false; # $bulider条件中只有1个where,则尝试在数据ID缓存中获取 if (count($bulider['where']) == 1 && ($bulider['where'][0]['AND'][1] == '=' || $bulider['where'][0]['AND'][1] == 'in')) { # foreach ($bulider['where'] as $k => $v) { if ($v && $k != 'where') { return $not_need_find; } } $field_name = $bulider['where'][0]['AND'][0]; if ($field_name == $this->id_field_name()) { $value = $bulider['where'][0]['AND'][2]; $id_data = OOP_ORM_Data::id_field_cache_data($this->get_orm_name('Data'), $value); if ($id_data) { # 获取到数据 if ($bulider['where'][0]['AND'][1] == 'in') { $new_value = array(); foreach ($value as $v) { if (!isset($id_data[$v])) { $new_value[] = $v; } } if ($new_value) { # 更新where条件 $bulider['where'][0]['AND'][2] = $new_value; } else { $not_need_find = true; } $id_cache_data = $id_data; } else { $not_need_find = true; $id_cache_data = array($id_data); } } } } return $not_need_find; }