选择语言 :

 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;
}