介绍
今天就跟大家聊聊有关负载()与()保存怎么在Yii 2中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
public function 负载(数据,美元,美元formName =, null) ,{ 时间=美元才能scope formName 美元;===,null ?,这→美元formName (),:, formName美元;,//调用load 一般我是,test 美元;=,new 测试(),测试→美元负载(& # 39;参数1 & # 39;,& # 39;参数2 & # 39;)//,参数1,一般是post get 传过来的参数,第二个参数,是一个空字符串,& # 39;& # 39;;//$ this→formName(),返回的额是,你实例化的类的名字,new 测试(),最后返回的是测试 if 才能;(scope 美元;===,& # 39;& # 39;,,,,!空(元数据)),{ ,,这→美元setAttributes(元数据);//进入 ,,return 真实; ,,},elseif (收取($ data[美元]范围)),{ ,,这→美元setAttributes ($ data[美元]范围); ,,return 真实; ,,},{else ,,return 假; ,,} 以前,}><强>接下来看,,setAttributes() 强>
public function setAttributes(值,美元,美元safeOnly =,真的) ,{ if 才能;(is_array(值)美元),{ ,,attributes 美元;=,array_flip (safeOnly 美元;?,这→美元safeAttributes (),:, $ this→属性());//这里执行的是$ this→safeAttributes()方法,该方法返回的是当前场景下需要验证的字段。最后美元属性打印下来看下图 foreach (values 美元;as name 美元;=祝辞,美元值),{ ,if (收取(属性[名字]美元)美元),{, 这→name 美元=,美元价值,, ,}elseif (safeOnly美元),{ ,$ this→onUnsafeAttribute(名称、美元,美元值),, },}, }大敌; }图:图1的文件名是test 实例化后是美元测试对象,<代码>公共职能attribues() 代码>方法中对应的就是表字段。
我这里没有用场景,所以暂时不讲解场景这个功能。不过大家可以看手册。很容易懂。
//例如post 提交过来的数据是这样 $=后[ & # 39;一个# 39;=祝辞;123456年, & # 39;b # 39;=祝辞& # 39;六边形abcdef # 39; ), 测试→美元=123456 美元测试→b=& # 39;六边形abcdef # 39;
所以这个负载()方法只是分配post 或者得到发过来的数据,不做验证。
<强>接下来看保存();强>
<强>查看保存方法。强>
public function 保存($ runValidation =,真的,,attributeNames 美元;=,null) ,{ if 才能;($ this→getIsNewRecord()),{//判断是否是新纪录 ,,return 美元这→插入(runValidation美元,,attributeNames美元);//执行这里,之后美元这代表的是test 这个模型表。//test 继承的是\ yii \ mongodb \ ActiveRecord 查看插入(),方法,。 },{else ,return 这→美元更新(runValidation美元,,attributeNames美元),!==,假,,} ,}
<强> insert()方法中强>
public function 插入($ runValidation =,真的,,attributes 美元;=,null) ,{ if 才能;(runValidation 美元;,,,! $ this→验证(属性)美元),{//下面的代码分析验证方法,验证规则 ,,return 假; ,,}=美元才能result $ this→insertInternal($属性);//保存数据 return 才能;美元的结果; 以前,}><强>首先看强>
//进行数据验证。 public function 验证(attributeNames 美元;=,null,, clearErrors 美元;=,真的) ,{ if 才能;(clearErrors美元),{ ,,这→美元clearErrors (); ,,} if 才能;(! $ this→beforeValidate()),{//在验证之前首先执行的是,beforValidata ,,return 假; ,,}=美元才能scenarios $ this→场景();=美元才能scenario $ this→getScenario ();//检查是否调用场景 if 才能;(!收取(场景(场景)美元)美元),{ ,,throw new  InvalidParamException (“Unknown 场景:,scenario"美元;); ,,} if 才能;(attributeNames 美元;===,null), { ,,attributeNames 美元;=,$ this→activeAttributes ();//返回数组(值为属性的名称) ,,}//$ this→getActiveValidators(),验证数据只读取rules 方法,getActiveValidators (),→getValidators ()→createValidators()这里验证规则等信息→createValidator () foreach ($ this→getActiveValidators (), as 验证器美元),{, 验证器→美元validateAttributes ($ this, attributeNames美元);,//获取交集,检查是否有错误,hasError () ,} ,$ this→afterValidate (); ,return ! $ this→hasErrors ();,}load()与()保存怎么在Yii 2中使用