前言

本文主要给大家介绍的是关于Yii2中load()和save()的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍吧。
我这里用的数据库是mongo 数据库 为栗子:
public function load($data, $formName = null)
{
$scope = $formName === null ? $this->formName() : $formName; //调用load 一般我是 $test = new test() $test->load('参数1','参数2')
// 参数1 一般是post get 传过来的参数 第二个参数 是一个空字符串 '';
// $this->formName() 返回的额是 你实例化的类的名字 new test() 最后返回的是test
if ($scope === '' && !empty($data)) {
$this->setAttributes($data); //进入
return true;
} elseif (isset($data[$scope])) {
$this->setAttributes($data[$scope]);
return true;
} else {
return false;
}
}
接下来看 setAttributes()
public function setAttributes($values, $safeOnly = true)
{
if (is_array($values)) {
$attributes = array_flip($safeOnly ? $this->safeAttributes() : $this->attributes());
//这里执行的是$this->safeAttributes()方法,该方法返回的是当前场景下需要验证的字段。最后$attributes打印下来看下图
foreach ($values as $name => $value) {
if (isset($attributes[$name])) {
$this->$name = $value;
} elseif ($safeOnly) {
$this->onUnsafeAttribute($name, $value);
} }
}
}
图: 图1的文件名是test 实例化后是$test 对象 public function attribues() 方法中对应的就是表字段。
我这里没有用场景 所以暂时不讲解场景这个功能。 不过大家可以看手册。很容易懂。
这两个图是对相应的
在之后 执行的是 foreache循环 这里的$this 是那个$test 这个对象对象去调用
//例如post 提交过来的数据是这样 $post=[ 'a'=>123456, 'b'=>'abcdef' ] $test->a=123456 $test->b='abcdef'
所以这个load()方法只是分配post 或者get 发过来的数据,不做验证。
接下来看save();
查看save方法 。
public function save($runValidation = true, $attributeNames = null)
{
if ($this->getIsNewRecord()) { //判断是否是新纪录
return $this->insert($runValidation, $attributeNames); //执行这里 之后$this代表的是test 这个模型表。
//test 继承的是\yii\mongodb\ActiveRecord 查看insert() 方法 。
} else {
return $this->update($runValidation, $attributeNames) !== false; }
}
insert() 方法中
public function insert($runValidation = true, $attributes = null)
{
if ($runValidation && !$this->validate($attributes)) { //下面的代码分析validate方法 验证rules
return false;
}
$result = $this->insertInternal($attributes); //保存数据
return $result;
}
首先看
//进行数据验证。
public function validate($attributeNames = null, $clearErrors = true)
{
if ($clearErrors) {
$this->clearErrors();
}
if (!$this->beforeValidate()) { //在验证之前首先执行的是 beforValidata
return false;
}
$scenarios = $this->scenarios();
$scenario = $this->getScenario(); //检查是否调用场景
if (!isset($scenarios[$scenario])) {
throw new InvalidParamException("Unknown scenario: $scenario");
}
if ($attributeNames === null) {
$attributeNames = $this->activeAttributes(); //返回数组(值为属性的名称)
}
//$this->getActiveValidators() 验证数据。 读取rules 方法 getActiveValidators() ->getValidators()->createValidators()这里验证rules等信息->createValidator()
foreach ($this->getActiveValidators() as $validator) {
$validator->validateAttributes($this, $attributeNames); //获取交集 检查是否有错误 hasError()
}
$this->afterValidate();
return !$this->hasErrors(); }
此时数据验证完毕,之后就保存数据 保存数据这块 就暂时不写了 后续补上。
好了 其中数据验证那一块 大家多看看源码吧。 一遍不行2遍 3遍 多了就懂了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# yii2
# load方法
# load
# save返回值
# 的是
# 暂时不
# 是一个
# 我是
# 好了
# 相关内容
# 是这样
# 我这
# 很容易
# 一遍
# 这两个
# 第二个
# 给大家
# 写了
# 不做
# 这块
# 这篇文章
# 谢谢大家
# 多说
# 多看
相关文章:
定制建站是什么?如何实现个性化需求?
如何获取PHP WAP自助建站系统源码?
太平洋网站制作公司,网络用语太平洋是什么意思?
如何用美橙互联一键搭建多站合一网站?
如何破解联通资金短缺导致的基站建设难题?
制作网站的公司有哪些,做一个公司网站要多少钱?
广东企业建站网站优化与SEO营销核心策略指南
建站主机选择指南:服务器配置与SEO优化实战技巧
c# Task.ConfigureAwait(true) 在什么场景下是必须的
SQL查询语句优化的实用方法总结
香港服务器网站卡顿?如何解决网络延迟与负载问题?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何用IIS7快速搭建并优化网站站点?
家具网站制作软件,家具厂怎么跑业务?
建站org新手必看:2024最新搭建流程与模板选择技巧
如何在搬瓦工VPS快速搭建网站?
如何制作网站标识牌,动态网站如何制作(教程)?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
宝塔建站后网页无法访问如何解决?
如何用y主机助手快速搭建网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
自助网站制作软件,个人如何自助建网站?
网站制作员失业,怎样查看自己网站的注册者?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何确保FTP站点访问权限与数据传输安全?
如何零基础在云服务器搭建WordPress站点?
如何通过IIS搭建网站并配置访问权限?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何实现建站之星域名转发设置?
如何通过西部建站助手安装IIS服务器?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
建站主机选购指南:核心配置与性价比推荐解析
常州企业网站制作公司,全国继续教育网怎么登录?
常州自助建站工具推荐:低成本搭建与模板选择技巧
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星导航配置指南:自助建站与SEO优化全解析
建站之星安装路径如何正确选择及配置?
如何快速生成专业多端适配建站电话?
如何高效完成自助建站业务培训?
建站之星在线版空间:自助建站+智能模板一键生成方案
香港服务器如何优化才能显著提升网站加载速度?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
制作网站怎么制作,*游戏网站怎么搭建?
存储型VPS适合搭建中小型网站吗?
如何规划企业建站流程的关键步骤?
*请认真填写需求信息,我们会在24小时内与您取得联系。