3.1.2 - 普通 - 未处理
relationModel 在执行 add 操作时无法自动排除不需要的字段这个是model.class.php 内的 _facade 方法 作用是自动排除字段
protected function _facade($data) {
267: // 检查非数据字段
268: if(!empty($this->fields)) {
269: foreach ($data as $key=>$val){
270: if(!in_array($key,$this->fields,true)){
271: unset($data[$key]);
272: }elseif(is_scalar($val)) {
273: // 字段类型检查
274: $this->_parseType($data,$key);
275: }
276: }
277: }
278: // 安全过滤
279: if(!empty($this->options['filter'])) {
280: $data = array_map($this->options['filter'],$data);
281: unset($this->options['filter']);
282: }
283: $this->_before_write($data);
284: return $data;
285: }但是在 relationModel.class.php 中/**
* 对保存到数据库的数据进行处理
* @access protected
* @param mixed $data 要操作的数据
* @return boolean
*/
protected function _facade($data) {
$this->_before_write($data);
return $data;
}_facade($data) 被重载为了 _before_write方法下面我们看看 model.class.php里面的 _before_write方法
287: // 写入数据前的回调方法 包括新增和更新
288: protected function _before_write(&$data) {}其内容为空不可以直接注释掉此语句 否者关联表写入出错
希望官方能看看 是不是要修复这个BUG
十分感谢
