SDb::set PHP Method

set() public method

保存信息,支持外键属性保存 当外键属性保存时,特别注意: 你必须初始化外键的值,否则可能无效,如: $test->user_profile = new stdclass; $test->user_profile->field_name = "field_value";
public set ( )
    public function set()
    {
        $r = false;
        if (!empty($this->_fields)) {
            $condition = array();
            foreach ($this->_fields as $k => $v) {
                if (!is_object($v)) {
                    $condition[$k] = $v;
                }
            }
            if (count($condition) > 1) {
                //当只有修改2个以上字段时才更新
                $r = parent::insert($this->table_name, $condition, false, false, $condition);
            }
            //更新外键信息
            foreach ($this->foreign_keys as $k => $v) {
                //判断外键有没有值,如果没有值,必须重新获取
                //TODO
                $tmp = explode(".", $v);
                if (!empty($tmp[0]) && !empty($tmp[1])) {
                    $tbl_name = trim($tmp[0]);
                    $filed_name = trim($tmp[1]);
                    //有外键设置
                    if (isset($this->_fields->{$tbl_name}) && is_object($this->_fields->{$tbl_name})) {
                        //判断关联主键有没有条件
                        if (!isset($this->_fields->{$k})) {
                            $this->get(false);
                        }
                        //如果能获取到才修改
                        if (isset($this->_fields->{$k})) {
                            $items = $this->_fields->{$tbl_name};
                            //把外键条件加入进去
                            $items->{$filed_name} = $this->_fields->{$k};
                            $r = parent::insert($tbl_name, $items, false, false, $items);
                        }
                    }
                }
            }
        }
        return $r;
    }