选择语言 :

 Module_OOP_ORM_Data::__orm_callback_ini_data_

用于给ORM回调设置数据

null Module_OOP_ORM_Data::__orm_callback_ini_data_( [ array $data = null , boolean $is_field_key = bool false ] )

参数列表

参数 类型 描述 默认值
$data array 待设置的数据 null
$is_field_key boolean 待设置的数据的key是否数据库的字段,true是,false则为offset bool false
File: ./modules/oop/orm/data.class.php
protected function __orm_callback_ini_data_($data = null, $is_field_key = false)
{
    if ( !is_array($data) ) return false;

    # 记录当前orm是否构造完成
    $created = $this->_orm_data_is_created;

    # 将orm设置为未构造状态,因为set_data时会根据构造状态执行不同的操作
    $this->_orm_data_is_created = false;

    # 如果是字段数据,则整理为offset数据
    if ( $is_field_key )
    {
        foreach ($data as $key=>$value)
        {
            # 获取当前字段的首个offset
            $offset = current($this->_get_offset_name_by_field($key));
            if (!$offset)
            {
                $offset = $key;
            }
            $this->set_data($offset, $value , false);
        }
    }
    else
    {
        # 设置数据
        $this->set_data($data, null , false);
    }

    # 还原状态
    $this->_orm_data_is_created = $created;

    # ID数据缓存,用于重复ID主键数据查询时直接返回
    if (IS_CLI && $is_field_key)
    {
        $id_field_name = $this->id_field_name();
        $id = $data[$id_field_name];

        if ( OOP_ORM_Data::$_id_field_cache_data_num > OOP_ORM_Data::$max_id_cache_num )
        {
            // 超过最大cache数则清除掉
            OOP_ORM_Data::$_id_field_cache_data = array();
        }

        if ( $id && !isset(OOP_ORM_Data::$_id_field_cache_data[$this->_class_name][$id]) )
        {
            OOP_ORM_Data::$_id_field_cache_data[$this->_class_name][$id] = $data;
            OOP_ORM_Data::$_id_field_cache_data_num += 1;
        }
    }
}