Yii中小物件save()方法原理与使用

Yii当中使用小物件实现前端数据与后台数据库交互的时候,save()方法应该是比较重要的一个部分,但是之前对于save()方法的理解比较片面。

1、创建对象形式不同,对save()方法调用效果不同

方法一:

插入一条新的记录

$object = new Model();//Model为当前需要的表单创建的模型
if(isset($_POST['Model'])){//用attributes记录传递的值            
    $object -> attributes = $_POST['Model']; //将Model的在前端页面存入的值保存到数据库中
$object.save()//调用save()方法时,使用的是insert语句

方法二:

更新一条记录

$object = Model::model();//Model为当前需要的表单创建的模型
if(isset($_POST['Model'])){//用attributes记录传递的值            
    $object -> attributes = $_POST['Model']; //将Model的在前端页面存入的值保存到数据库中
    $object.save()//调用save()方法时,使用的是update语句

以上两个方法,大家应该都比较熟悉。

2、打印save保存错误 的方法

if($user->save) {// 处理
} else {//处理报错
 var_dump($user->getErrors());
}

3、save()方法与Model当中的rules()之间关系

以上内容只是简单的对save()方法的依葫芦画瓢,没有知道其运行时的正真原理,根据之前看过的教学视频和最近使用的经验准备下面详细讲述一下。

1、save()执行时去了哪?

这里写图片描述
1. 表单数据校验save()方法后边有一个环节会执行模型的rules()方法,也就校验表单了。
2. 流程:save()—->validate()—->rules()
3. 验证用户信息:模型->validate()来验证用户信息
4. rules()方法在Model当中定义,在前端页面中对小物件属性进行设置,如果出错可以在前端页面有所展示
这里写图片描述

4、在save()方法执行之前判断输入内容

到这里,一般都不会有什么问题,但是前面的方法一与方法二都是直接获取用户传递的数据,直到执行save()方法,才进行判断是否输入合理正确,有时和我们需要的判断不一致,因为在获取页面提交数据之后,可能还有其他操作,进一步再处理数据,所以这里需要自己定义用户输入的内容,将输入的内容在执行save()方法之前进行判断。
例如:如果为空直接不赋值了,也不需要走到save()进行保存在验证发现出错来提示。

if(isset($_POST['Model'])&&$_POST['Model']['objectname'] != null){//如果为空直接不赋值了                               
    $trTeam -> attributes = $_POST['Model']; //用attributes记录传递的值 
    //......
}else{
    Yii::app()->user->setFlash('Failed','名称为空!');
}

这时候需要我们将错误的信息通过一定的方式传递到前端,我采用的是setFlash,在前端用getFlash对其进行获取显示。
Yii setFlash getFlash用法
其余的原理也是类似的,如果直接进行判断,可以提前进行,不要等走到save()才去验证。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值