3.2.3 - 致命 - 未处理
$data = $Model->auto($rule['auto'])->validate($rule['verify'])->create();这是手动创建的自动完成与自动验证。1 按照执行顺序 会先进行自己验证处理,然后才是自动完成
2 假设在自动验证中,我们存在字段为unique的验证
3 在model类的_validationFieldItem方法中可以看到执行了这一句查询
if($this->where($map)->find()) return false;4 追踪find函数 发现调用了表达式解析的方法$options = $this->_parseOptions($options);5 追踪_parseOptions函数 发现这一句// 查询过后清空sql表达式组装 避免影响下次查询
$this->options = array();6 那么问题来了,在自动验证时,就已经把条件给清空了。那还怎么自动完成?所以,我得到的结果 非预期的结果。这里不能使用链式操作。
最终代码如下
$Model->validate($rule['verify'])->create();
$data = $Model->auto($rule['auto'])->create(); 