relationModel add方法无法自动筛选表字段

浏览:737 发布日期:2013/09/05
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

十分感谢
评论(
后面还有条评论,点击查看>>