牛骨文教育服务平台(让学习变的简单)
博文笔记

关于YII save() 返回false

创建时间:2014-03-19 投稿人: 浏览次数:7201

RT、

使用model的save时候返回失败   打印日志也没找到端倪。狗之查了些资料。现在分享出来


	public function rules()
	{
		return array(
			array("username, password, captcha", "required", "on"=>"login,create"),
		    array("username", "unique", "on"=>"create"),
            		array("password2","required","on"=>"create"),

			array("captcha", "captcha", "allowEmpty"=>!extension_loaded("gd"), "on"=>"login,create"),


            //验证密码和确认密码
            array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致","on"=>"create"),
		);
	}

注意这里我是有写 
array("password2","required","on"=>"create"),
前端控制器 我写的是
 public function actionIndex(){
        $model = new User("create");
        if(isset($_POST["User"])){
            $model->attributes = $_POST["User"];
            if($model->validate() ){

                $a = $model->save(false);// 注意这里 当时我没写 false

            }
        }

这样的原因就是。rules规则里 把我写的password2当做了数据库字段,必须要保存的。但是实际表里没有这个字段

解决办法

一 是去掉跟password2有关的规则

二 就是上面说的在save的时候把属性设置为false

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。