根据$bulider条件解析获取已缓存在PHP的数据
boolean Module_OOP_ORM_Finder_DB::_get_id_field_cache_data( array & $bulider , array & $id_cache_data )
参数列表
参数 类型 描述 默认值 $bulider
array
$bulider $id_cache_data
array
$id_cache_data
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;
}