Module_OOP_ORM_Parse::_get_orm_group_data
null Module_OOP_ORM_Parse::_get_orm_group_data( )
File: ./modules/oop/orm/parse.class.php
protected static function _get_orm_group_data(OOP_ORM $obj, OOP_ORM_Data $data_obj, $orm_config , $index)
{
$group_data = $data_obj->get_group_data();
if ( $group_data )
{
foreach ( $orm_config['mapping'] as $k => $v )
{
$tmpdata = array(); //记录临时数据
foreach ( $group_data as $i => $item )
{
# 当前字段需要符合的条件
$iswhere = true;
if ( isset($orm_config['where']) )
{
foreach ( $orm_config['where'] as $wk => $wv )
{
if ( $item->$wk != $wv )
{
$iswhere = false;
}
}
}
if ( $iswhere )
{
$tmpdata[] = $item->$v;
}
}
$tmpdata = array_unique($tmpdata);
if ( $tmpdata )
{
$obj->in($k, $tmpdata);
}
}
if ( $tmpdata )
{
# 如果有临时数据,则表明可以进行批量获取
if ( isset($orm_config['where']) ) foreach ( $orm_config['where'] as $k => $v )
{
# 额外的一些条件
$obj->where($k, $v);
}
$all_data = $obj->find();
}
else
{
$all_data = array();
}
# 整理data,将数据放在一个以mapping条件组成的key数组里
$tmp = array();
foreach ( $all_data as $item )
{
$tmpkey = '';
foreach ( $orm_config['mapping'] as $k => $v )
{
$tmpkey .= '|' . $k . '_' . $item->$k;
}
$tmp[$tmpkey] = $item;
}
# 将获取来的数据赋值给各个对象
foreach ( $group_data as $item )
{
$tmpkey = '';
foreach ( $orm_config['mapping'] as $k => $v )
{
$tmpkey .= '|' . $k . '_' . $item->$v;
}
if ( $item===$data_obj )
{
# 当前对象
$data = isset($tmp[$tmpkey]) ? $tmp[$tmpkey] : null;
}
else
{
$item->$index = isset($tmp[$tmpkey]) ? $tmp[$tmpkey] : null;
}
}
if ( isset($data) )
{
# 已经获取到当前对象,直接返回
return $data;
}
}
return true;
}