|  | @@ -2153,9 +2153,9 @@ class Database
 | 
	
		
			
				|  |  |                          $body[$j][$i] = '';
 | 
	
		
			
				|  |  |                          //if (isset($vi[$k])) {
 | 
	
		
			
				|  |  |                          # 处理同步
 | 
	
		
			
				|  |  | -                        if (isset($v['sync']) && strpos($k, '-')) {
 | 
	
		
			
				|  |  | +                        # 兼容旧版,之后去掉
 | 
	
		
			
				|  |  | +                        if (isset($v['sync']) && isset($v['sync'][0]) && (strstr($k, '-') || strstr($k, '.'))) {
 | 
	
		
			
				|  |  |                              $temp = explode('-', $k);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                              if ($vi[$v['sync'][0]] > 0) {
 | 
	
		
			
				|  |  |                                  $load = Dever::load($temp[0] . '/' . $temp[1] . '-one', array('option_' . $v['sync'][1] => $vi[$v['sync'][0]]));
 | 
	
		
			
				|  |  |                              } else {
 | 
	
	
		
			
				|  | @@ -2165,6 +2165,9 @@ class Database
 | 
	
		
			
				|  |  |                              if (isset($temp[2])) {
 | 
	
		
			
				|  |  |                                  $data[$ki][$k] = $vi[$k] = isset($load[$temp[2]]) ? $load[$temp[2]] : $v['default'];
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                        } elseif (isset($v['sync']) && (strstr($k, '-') || strstr($k, '.'))) {
 | 
	
		
			
				|  |  | +                            $v['sync']['dever-read'] = $vi;
 | 
	
		
			
				|  |  | +                            $data[$ki][$k] = Dever::load($k, $v['sync']);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                          if (true) {
 | 
	
		
			
				|  |  |                              $value = $vi[$k];
 | 
	
	
		
			
				|  | @@ -2450,17 +2453,14 @@ class Database
 | 
	
		
			
				|  |  |                  if (is_string($v)) {
 | 
	
		
			
				|  |  |                      $v = ltrim(rtrim($v));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | -                if (strpos($k, '-') !== false) {
 | 
	
		
			
				|  |  | +                if (strstr($k, '-') || strstr($k, '.')) {
 | 
	
		
			
				|  |  |                      $k = str_replace('search_option_', '', $k);
 | 
	
		
			
				|  |  | -                    $temp = explode('-', $k);
 | 
	
		
			
				|  |  | -                    if (isset($config['struct'][$k]) && isset($config['struct'][$k]['sync'])) {
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  |                      $struct = $config['struct'][$k];
 | 
	
		
			
				|  |  |                      if (isset($struct['search_col']) && $struct['search_col']) {
 | 
	
		
			
				|  |  |                          $param[$struct['search_col']] = $v;
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | +                    } elseif (isset($struct['sync']) && isset($struct['sync'][0])) {
 | 
	
		
			
				|  |  | +                        # 兼容旧版,之后去掉
 | 
	
		
			
				|  |  | +                        $temp = explode('-', $k);
 | 
	
		
			
				|  |  |                          $load = Dever::load($temp[0] . '/' . $temp[1] . '-one', array('option_' . $struct['sync'][1] => $v));
 | 
	
		
			
				|  |  |                          /*
 | 
	
		
			
				|  |  |                          if ($v[$vi['sync'][0]] > 0) {
 | 
	
	
		
			
				|  | @@ -2474,8 +2474,14 @@ class Database
 | 
	
		
			
				|  |  |                              $v = isset($load[$temp[2]]) ? $load[$temp[2]] : $struct['default'];
 | 
	
		
			
				|  |  |                              $param[str_replace('search_', '', $k)] = $v;
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                    }elseif (isset($struct['sync'])) {
 | 
	
		
			
				|  |  | +                        $struct['sync']['dever-read']['id'] = $v;
 | 
	
		
			
				|  |  | +                        $v = Dever::load($k, $struct['sync']);
 | 
	
		
			
				|  |  | +                        if (!$v) {
 | 
	
		
			
				|  |  | +                            $v = $struct['default'];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        $param[str_replace('search_', '', $k)] = $v;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  |                  } elseif (strpos($k, 'dever_') !== false) {
 | 
	
		
			
				|  |  |                      continue;
 | 
	
		
			
				|  |  |                  } elseif (strpos($k, 'option_') !== false) {
 | 
	
	
		
			
				|  | @@ -2757,7 +2763,8 @@ class Database
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  foreach ($config['struct'] as $ki => $vi) {
 | 
	
		
			
				|  |  |                      # 处理同步
 | 
	
		
			
				|  |  | -                    if (isset($vi['sync']) && strpos($ki, '-')) {
 | 
	
		
			
				|  |  | +                    # 兼容处理,之后删除
 | 
	
		
			
				|  |  | +                    if (isset($vi['sync']) && (isset($vi['sync'][0]) && strpos($ki, '-')) {
 | 
	
		
			
				|  |  |                          $temp = explode('-', $ki);
 | 
	
		
			
				|  |  |                          if ($v[$vi['sync'][0]] > 0) {
 | 
	
		
			
				|  |  |                              $load = Dever::load($temp[0] . '/' . $temp[1] . '-one', array('option_' . $vi['sync'][1] => $v[$vi['sync'][0]]));
 | 
	
	
		
			
				|  | @@ -2769,6 +2776,13 @@ class Database
 | 
	
		
			
				|  |  |                          if (isset($temp[2])) {
 | 
	
		
			
				|  |  |                              $data[$k][$ki] = $v[$ki] = isset($load[$temp[2]]) ? $load[$temp[2]] : $vi['default'];
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                    } elseif (isset($vi['sync']) && (strstr($ki, '-') || strstr($ki, '.'))) {
 | 
	
		
			
				|  |  | +                        $vi['sync']['dever-read'] = $v;
 | 
	
		
			
				|  |  | +                        $v[$ki] = Dever::load($ki, $vi['sync']);
 | 
	
		
			
				|  |  | +                        if (!$v[$ki]) {
 | 
	
		
			
				|  |  | +                            $v[$ki] = $vi['default'];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        $data[$k][$ki] = $v[$ki];
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      if (isset($vi['list']) && $vi['list']) {
 | 
	
	
		
			
				|  | @@ -3458,7 +3472,7 @@ class Database
 | 
	
		
			
				|  |  |              $upload_call = $this->value($config['manage']['upload'], $data);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          foreach ($config['struct'] as $k => $v) {
 | 
	
		
			
				|  |  | -            if (isset($config['manage']['lang']) && $this->lang_set && isset($v['sync']) && strpos($k, '-')) {
 | 
	
		
			
				|  |  | +            if (isset($config['manage']['lang']) && $this->lang_set && isset($v['sync']) && (strstr($k, '-') || strstr($k, '.'))) {
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              $state = false;
 | 
	
	
		
			
				|  | @@ -3578,7 +3592,7 @@ class Database
 | 
	
		
			
				|  |  |                  foreach ($param[$key] as $k => $v) {
 | 
	
		
			
				|  |  |                      if ($k == 'no') {
 | 
	
		
			
				|  |  |                          $child[$k . '_' . $v] = $key . '_no';
 | 
	
		
			
				|  |  | -                    } elseif (strpos($v, '/')) {
 | 
	
		
			
				|  |  | +                    } elseif (strstr($v, '/')) {
 | 
	
		
			
				|  |  |                          $parent[$k] = $key . '_' . $k;
 | 
	
		
			
				|  |  |                          $k = $k . '_ajax';
 | 
	
		
			
				|  |  |                          $value = '';
 | 
	
	
		
			
				|  | @@ -3633,6 +3647,8 @@ class Database
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          $result = '';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        $this->update_key($key, $value);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          $value['ext'] = $value['col'] = $key;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          $value['update'] = $value['update'] ? $value['update'] : 'text';
 | 
	
	
		
			
				|  | @@ -3650,6 +3666,21 @@ class Database
 | 
	
		
			
				|  |  |          return $result;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private function update_key(&$key, &$value)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        if (strstr($key, '/')) {
 | 
	
		
			
				|  |  | +            if (strstr($key, '-')) {
 | 
	
		
			
				|  |  | +                $temp = explode('-', $key);
 | 
	
		
			
				|  |  | +                $value['api'] = $temp[0];
 | 
	
		
			
				|  |  | +                $value['method'] = $temp[1];
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                $value['api'] = $key;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $key = str_replace('/', '--', $key);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * update_html
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -3714,8 +3745,8 @@ class Database
 | 
	
		
			
				|  |  |                  $param['default'] = $this->option($param['default']);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            # 处理同步
 | 
	
		
			
				|  |  | -            if (isset($param['sync']) && strpos($key, '-') && $param['update'] != 'load') {
 | 
	
		
			
				|  |  | +            # 处理关联数据 兼容处理,以后删除
 | 
	
		
			
				|  |  | +            if (isset($param['sync']) && isset($param['sync'][0]) && strpos($key, '-') && $param['update'] != 'load') {
 | 
	
		
			
				|  |  |                  $temp = explode('-', $key);
 | 
	
		
			
				|  |  |                  if (isset($data[$param['sync'][0]])) {
 | 
	
		
			
				|  |  |                      if (isset($temp[2])) {
 | 
	
	
		
			
				|  | @@ -3757,6 +3788,31 @@ class Database
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      //$param['value'] = Dever::db($temp[0] . '/' . $temp[1]);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +            } elseif (isset($param['sync']) && isset($param['api']) && $param['update'] != 'load') {
 | 
	
		
			
				|  |  | +                $param['sync']['dever-read'] = $data;
 | 
	
		
			
				|  |  | +                $param['value'] = Dever::load($param['api'], $param['sync']);
 | 
	
		
			
				|  |  | +                if (is_array($param['update'])) {
 | 
	
		
			
				|  |  | +                    $order = false;
 | 
	
		
			
				|  |  | +                    if (isset($param['update'][0]) && is_string($param['update'][0]) && strstr($param['update'][0], '.')) {
 | 
	
		
			
				|  |  | +                        if (isset($param['update'][1]) && $param['update'][1]) {
 | 
	
		
			
				|  |  | +                            $param['update_load'] = $param['update'][0];
 | 
	
		
			
				|  |  | +                            $param['update'] = 'load';
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            $param['update'] = Dever::load($param['update'][0]);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        $config = Dever::db($param['api'])->config;
 | 
	
		
			
				|  |  | +                        $param['update'] = $config['struct']; 
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    if (isset($config['manage']['tab'])) {
 | 
	
		
			
				|  |  | +                        $param['prefix'] = $prefix;
 | 
	
		
			
				|  |  | +                        $param['tab_config'] = $config['manage']['tab'];
 | 
	
		
			
				|  |  | +                        if (isset($config['manage']['lang'])) {
 | 
	
		
			
				|  |  | +                            $param['lang'] = $config['manage']['lang'];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              $method = $param['update'];
 | 
	
	
		
			
				|  | @@ -3775,9 +3831,12 @@ class Database
 | 
	
		
			
				|  |  |                      $table_body = '<tbody>';
 | 
	
		
			
				|  |  |                      $table_key = '';
 | 
	
		
			
				|  |  |                      if (isset($param['option'])) {
 | 
	
		
			
				|  |  | -                        if (!isset($param['value'])) {
 | 
	
		
			
				|  |  | +                        $table_key = '1';
 | 
	
		
			
				|  |  | +                        if (isset($param['value']) && $param['value']) {
 | 
	
		
			
				|  |  | +                            $table_body .= '<tr class="table_copy" style="display:none;">';
 | 
	
		
			
				|  |  | +                            $table_up = 'up';
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  |                              $table_body .= '<tr>';
 | 
	
		
			
				|  |  | -                            $table_key = '1';
 | 
	
		
			
				|  |  |                              $table_up = 'update';
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      } else {
 | 
	
	
		
			
				|  | @@ -3791,6 +3850,7 @@ class Database
 | 
	
		
			
				|  |  |                              if (isset($hv['col'])) {
 | 
	
		
			
				|  |  |                                  $hk = $hv['col'];
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                            $this->update_key($hk, $hv);
 | 
	
		
			
				|  |  |                              if ($this->id && $hk === 'id') {
 | 
	
		
			
				|  |  |                                  $hv['update'] = 'hidden';
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -3830,6 +3890,7 @@ class Database
 | 
	
		
			
				|  |  |                                  if (isset($hv['col'])) {
 | 
	
		
			
				|  |  |                                      $hk = $hv['col'];
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  | +                                $this->update_key($hk, $hv);
 | 
	
		
			
				|  |  |                                  if ($this->id && $hk === 'id') {
 | 
	
		
			
				|  |  |                                      $hv['update'] = 'hidden';
 | 
	
		
			
				|  |  |                                  }
 | 
	
	
		
			
				|  | @@ -3848,7 +3909,9 @@ class Database
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | -                            $table_body .= '<td><a href="javascript:;" onclick="var self = $(this);var index = layer.confirm(\'确定进行此项操作吗?\', function(i, l){self.parent().parent().remove();layer.close(index);});" class="layui-btn layui-btn-xs">删除</a></td>';
 | 
	
		
			
				|  |  | +                            if ($table_key == '-1') {
 | 
	
		
			
				|  |  | +                                $table_body .= '<td><a href="javascript:;" onclick="var self = $(this);var index = layer.confirm(\'确定进行此项操作吗?\', function(i, l){self.parent().parent().remove();layer.close(index);});" class="layui-btn layui-btn-xs">删除</a></td>';
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              $table_body .= '</tr>';
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -3867,6 +3930,7 @@ class Database
 | 
	
		
			
				|  |  |                          if (isset($hv['col'])) {
 | 
	
		
			
				|  |  |                              $hk = $hv['col'];
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                        $this->update_key($hk, $hv);
 | 
	
		
			
				|  |  |                          if ($this->id && $hk === 'id') {
 | 
	
		
			
				|  |  |                              $hv['update'] = 'hidden';
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -3900,6 +3964,7 @@ class Database
 | 
	
		
			
				|  |  |                                  if (isset($hv['col'])) {
 | 
	
		
			
				|  |  |                                      $hk = $hv['col'];
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  | +                                $this->update_key($hk, $hv);
 | 
	
		
			
				|  |  |                                  if ($this->id && $hk === 'id') {
 | 
	
		
			
				|  |  |                                      $hv['update'] = 'hidden';
 | 
	
		
			
				|  |  |                                  }
 | 
	
	
		
			
				|  | @@ -3948,7 +4013,10 @@ class Database
 | 
	
		
			
				|  |  |                          array_unshift($method, $order);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          if (isset($param['value']) && $param['value']) {
 | 
	
		
			
				|  |  | -                            $value = Dever::array_decode($param['value']);
 | 
	
		
			
				|  |  | +                            $value = $param['value'];
 | 
	
		
			
				|  |  | +                            if (!is_array($value)) {
 | 
	
		
			
				|  |  | +                                $value = Dever::json_decode($value);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              $param['value'] = array();
 | 
	
		
			
				|  |  |                              if (!$value) {
 | 
	
		
			
				|  |  |                                  foreach ($param['option'] as $k => $v) {
 | 
	
	
		
			
				|  | @@ -3982,7 +4050,6 @@ class Database
 | 
	
		
			
				|  |  |                                  $param['value'][$v]['main_' . $key] = $k;
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          $result .= '<ul class="nav nav-tabs '.$c.'" style="height:100%;">{tab}<li style="margin:0px;padding:0 15px;"><a href="javascript:;" class="dever_form_add" toggle_key="' . $key . '">增加一条</a></li></ul>';
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -4313,7 +4380,9 @@ class Database
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          if (strpos($h, '-')) {
 | 
	
		
			
				|  |  |                              $h = str_replace('update_', '', $h);
 | 
	
		
			
				|  |  | -                            if (isset($config['struct'][$h]) && isset($config['struct'][$h]['sync'])) {
 | 
	
		
			
				|  |  | +                            $h = str_replace('--', '/', $h);
 | 
	
		
			
				|  |  | +                            # 兼容处理 之后删除
 | 
	
		
			
				|  |  | +                            if (isset($config['struct'][$h]) && isset($config['struct'][$h]['sync']) && isset($config['struct'][$h]['sync'][0])) {
 | 
	
		
			
				|  |  |                                  $s_col = $config['struct'][$h]['sync'][0];
 | 
	
		
			
				|  |  |                                  $m_col = $config['struct'][$h]['sync'][1];
 | 
	
		
			
				|  |  |                                  if ($s_col == 'id') {
 | 
	
	
		
			
				|  | @@ -4340,6 +4409,35 @@ class Database
 | 
	
		
			
				|  |  |                                  if ($this->id && $temp[1] == 'id') {
 | 
	
		
			
				|  |  |                                      $update_id[$i][$index][$num]['id'] = $v;
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  | +                            } elseif (isset($config['struct'][$h]) && isset($config['struct'][$h]['sync'])) {
 | 
	
		
			
				|  |  | +                                $t = explode('-', $h);
 | 
	
		
			
				|  |  | +                                $index = $t[0];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                if (Dever::zero($v)) {
 | 
	
		
			
				|  |  | +                                    $v = (string) $v;
 | 
	
		
			
				|  |  | +                                } elseif (!$v) {
 | 
	
		
			
				|  |  | +                                    $v = 'null';
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                $update_set[$i][$index][$num]['set_' . $temp[1]] = $v;
 | 
	
		
			
				|  |  | +                                $update_add[$i][$index][$num]['add_' . $temp[1]] = $v;
 | 
	
		
			
				|  |  | +                                if ($this->id && $temp[1] == 'id') {
 | 
	
		
			
				|  |  | +                                    $update_id[$i][$index][$num]['id'] = $v;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                
 | 
	
		
			
				|  |  | +                                foreach ($config['struct'][$h]['sync'] as $ks => $vs) {
 | 
	
		
			
				|  |  | +                                    if ($vs == 'id') {
 | 
	
		
			
				|  |  | +                                        $vs = $this->id;
 | 
	
		
			
				|  |  | +                                        $update_col[$i][$index] = $ks;
 | 
	
		
			
				|  |  | +                                    } else {
 | 
	
		
			
				|  |  | +                                        $s_one = $this->load('one', $this->id);
 | 
	
		
			
				|  |  | +                                        if (isset($s_one[$vs])) {
 | 
	
		
			
				|  |  | +                                            $vs = $s_one[$vs];
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    $update_add[$i][$index][$num]['add_' . $ks] = $vs;
 | 
	
		
			
				|  |  | +                                    $update_deletes[$i][$index][$ks] = $vs;
 | 
	
		
			
				|  |  | +                                    $update_id[$i][$index][$num][$ks] = $vs;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          } else {
 | 
	
		
			
				|  |  |                              $update[$i][$k][$num][$temp[1]] = $v;
 | 
	
	
		
			
				|  | @@ -4372,7 +4470,7 @@ class Database
 | 
	
		
			
				|  |  |                              $temp = explode('l-l', $k);
 | 
	
		
			
				|  |  |                              $k = str_replace('_', '', $temp[2]);
 | 
	
		
			
				|  |  |                              $update_other[$i][$temp[1]][$k] = $v;
 | 
	
		
			
				|  |  | -                        } elseif (strpos($k, '-')) {
 | 
	
		
			
				|  |  | +                        } elseif (strpos($k, '-') && isset($config['struct'][$k]['sync'][0])) {
 | 
	
		
			
				|  |  |                              $k = str_replace('update_', '', $k);
 | 
	
		
			
				|  |  |                              if (isset($config['struct'][$k]) && isset($config['struct'][$k]['sync'])) {
 | 
	
		
			
				|  |  |                                  $s_col = $config['struct'][$k]['sync'][0];
 | 
	
	
		
			
				|  | @@ -4423,6 +4521,61 @@ class Database
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                        } elseif (strpos($k, '#')) {
 | 
	
		
			
				|  |  | +                            $k = str_replace('update_', '', $k);
 | 
	
		
			
				|  |  | +                            $k = str_replace('--', '/', $k);
 | 
	
		
			
				|  |  | +                            # 此处需要改造 ---
 | 
	
		
			
				|  |  | +                            if (isset($config['struct'][$k]) && isset($config['struct'][$k]['sync'])) {
 | 
	
		
			
				|  |  | +                                $temp = explode('-', $k);
 | 
	
		
			
				|  |  | +                                $index = $temp[0];
 | 
	
		
			
				|  |  | +                                $temp = explode('#', $temp[1]);
 | 
	
		
			
				|  |  | +                                $c_col = $temp[1];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                $update_set[$i][$index][0]['set_' . $c_col] = $v;
 | 
	
		
			
				|  |  | +                                $update_add[$i][$index][0]['add_' . $c_col] = $v;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                foreach ($config['struct'][$k]['sync'] as $ks => $vs) {
 | 
	
		
			
				|  |  | +                                    if ($vs == 'id') {
 | 
	
		
			
				|  |  | +                                        $vs = $this->id;
 | 
	
		
			
				|  |  | +                                        $update_col[$i][$index] = $ks;
 | 
	
		
			
				|  |  | +                                    } else {
 | 
	
		
			
				|  |  | +                                        $s_one = $this->load('one', $this->id);
 | 
	
		
			
				|  |  | +                                        if (isset($s_one[$vs])) {
 | 
	
		
			
				|  |  | +                                            $vs = $s_one[$vs];
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    $update_add[$i][$index][0]['add_' . $ks] = $vs;
 | 
	
		
			
				|  |  | +                                    $update_id[$i][$index][0][$ks] = $vs;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                $temp = explode('-', $k);
 | 
	
		
			
				|  |  | +                                $k = $index = $temp[0];
 | 
	
		
			
				|  |  | +                                $temp = explode('#', $temp[1]);
 | 
	
		
			
				|  |  | +                                $c_col = $temp[1];
 | 
	
		
			
				|  |  | +                                if (isset($config['struct'][$k]) && isset($config['struct'][$k]['sync'])) {
 | 
	
		
			
				|  |  | +                                    $c_col = ltrim($c_col, '_');
 | 
	
		
			
				|  |  | +                                    $temp = explode('_', $c_col);
 | 
	
		
			
				|  |  | +                                    $up = array();
 | 
	
		
			
				|  |  | +                                    $up['add_' . $temp[0] . '_id'] = $temp[1];
 | 
	
		
			
				|  |  | +                                    $up['add_' . $temp[0] . '_value'] = $v;
 | 
	
		
			
				|  |  | +                                    
 | 
	
		
			
				|  |  | +                                    foreach ($config['struct'][$k]['sync'] as $ks => $vs) {
 | 
	
		
			
				|  |  | +                                        if ($vs == 'id') {
 | 
	
		
			
				|  |  | +                                            $vs = $this->id;
 | 
	
		
			
				|  |  | +                                            $update_col[$i][$index] = $ks;
 | 
	
		
			
				|  |  | +                                        } else {
 | 
	
		
			
				|  |  | +                                            $s_one = $this->load('one', $this->id);
 | 
	
		
			
				|  |  | +                                            if (isset($s_one[$vs])) {
 | 
	
		
			
				|  |  | +                                                $vs = $s_one[$vs];
 | 
	
		
			
				|  |  | +                                            }
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                        $up['add_' . $ks] = $vs;
 | 
	
		
			
				|  |  | +                                        $update_delete[$i][$index][][$ks] = $vs;
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    $update_add[$i][$index][] = $up;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                          } else {
 | 
	
		
			
				|  |  |                              if (is_array($v)) {
 | 
	
		
			
				|  |  |                                  $k = str_replace('update_', '', $k);
 | 
	
	
		
			
				|  | @@ -4450,6 +4603,7 @@ class Database
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            //print_r($update_col);
 | 
	
		
			
				|  |  |              //print_r($update_set);
 | 
	
		
			
				|  |  |              //print_r($update_id);
 | 
	
		
			
				|  |  |              //print_r($update_add);die;
 |