2015-05-07 10:20:54 11105次浏览 7条回答 2 悬赏 15 金钱

我更新数据时,控制器能接收到post传递的数据,用save方法时,如果用save(false)就能正常更新;而如果用save()就一点反应没有,我在模型里面写了验证规则,能正常验证,会提示验证写好的错误信息,但是就是没法更新数据,是为什么?

  • 回答于 2015-05-07 10:29 举报

    save(false) 是保存不验证,save() 没反应,会先 validate(),没反应说明没有通过验证规则,请检查一下你的验证规则吧。

    1 条回复
    回复于 2015-05-07 10:37 回复

    但是我所有的attributes都已经在验证规则里面写了,而且,我故意写错的情况下,错误信息都能显示出来!

    , 觉得很赞
  • 回答于 2015-05-07 10:29 举报

    参数false代表的是不进行验证,所以问题肯定是出现在你的验证规则里了。建议你,var_dump($model->errors);看一下

    1 条回复
    回复于 2015-05-07 10:40 回复

    var_dump的结果是:array(0) { }

    觉得很赞
  • 回答于 2015-05-07 10:47 举报

    那唯一的解释就是,你的数据库设计导致的数据无法插入或修改。对比一下数据库字段,然后看下你插入的数据,这种情况下,请看下debug输出的update 语句,然后手动运行一下,看看SQL是否有问题。

    3 条回复
    回复于 2015-05-07 10:58 回复

    但我不验证的时候,正常插入啊

    回复于 2015-05-07 11:14 回复

    我有点晕了,我不进行验证的时候,它还必须要有safe项的规则设置,我进行验证的时候,它又一点反应都没有

    回复于 2015-05-07 13:39 回复

    通常这不是框架的问题,肯定是哪里写错了导致的,如果你实在找不到原因,就把Model重写一遍,试试。

  • 回答于 2015-05-08 17:20 举报

    $model->getErrors()试一下,或者是不是没有设置主键,或者主键也设置为必填字段了

  • 回答于 2015-05-09 10:34 举报

    楼上几位全部正解,比如你写了验证码,save()必须要验证 validate(),建议你 save() 前改下场景再试试,

    $user->scenario='null';
    public function scenarios(){
        $scenarios=parent::scenarios();
        $scenarios['null']=[];
        return $scenarios;
    }
    
    觉得很赞
  • 回答于 2015-05-10 22:35 举报

    是数据项的数据类型出了问题, 欧耶。

  • 回答于 2018-07-30 11:23 举报

    题主最后问题解决了吗?怎么解决的?

您需要登录后才可以回答。登录 | 立即注册
phpwuyimin
助理

phpwuyimin

注册时间:2015-04-29
最后登录:2015-07-10
在线时长:2小时57分
  • 粉丝3
  • 金钱45
  • 威望10
  • 积分165

热门问题