增删改查与验证

最后更新于:2022-04-02 02:22:39

[TOC] ### 添加操作,并获取create的data 需要在add前获取到 $model->data(); ```php if(!$channel->create($data)){ $this->error($channel->getError()); }else{ $channel->create_time =time(); $data = $channel->data();// $channel->add(); } ``` ### 更新操作 1. 方法一,不使用create 方法 ```php $channelData =D("Channel")->where(array('id'=>1)); //判断是否有值 if(!$channelData->find()){ $this->error(暂无数据); } $channel->status=1; //没有报错后继续赋值 $channel->save() ``` 2. 方法二,更新或添加操作 ``` $channel = D("Channel"); //直接在参数中写入主键,则视为更新 $data=array( 'id'=>1, 'create_time'=>111, 'update_time'=>1112, 'token'=>'', ); if(!$channel->create($data)){ $this->error($channel->getError()); }else{ $channel->save(); } ``` ### 查询操作 ```php //符合条件的一个值 D("test")->where(['age'=>11])->getField('id'); //return String 2 //查询符合条件的多个值,第二个参数加true D("test")->where(['age'=>11])->getField('id',true); //return array ( 0 => '2', 1 => '3') //通过条件查询整条数据 $data=M('Test')->getByName('白俊遥'); //通过条件查询字段 M('read_adv_media')->getFieldById($id,'aid'); //return string 12 ``` ### 自动验证 model 模型中 ``` protected $_validate = array( ['phone','require','手机号必填',self::EXISTS_VALIDATE,], //self::EXISTS_VALIDATE =0 表单存在字段则验证 ['phone',PHONE_REGEX,'手机号格式错误',self::EXISTS_VALIDATE,'regex'], ['phone','','手机号已被注册',self::EXISTS_VALIDATE,'unique'], ['password','require','密码必填',self::EXISTS_VALIDATE], ['password','3,13','长度过短',self::EXISTS_VALIDATE,'length'], ['password_2','password','密码不一致',self::EXISTS_VALIDATE,'confirm'], //confirm 表示password_2字段与password字段 是否相等 ['check','123','与check1不相等',self::EXISTS_VALIDATE,'equal'], //equal 表示check字段是否等于 123 ['tel','usecall','tel不通过',self::EXISTS_VALIDATE,'callback','0575'], //第六个参数 就是回调函数的第一个参数可以是数组 ); //只能进行布尔判断,不能重新赋值 protected function usecall($pre){ $user = D("user")->where(['user'=>'demo'])->find(); if($user){ return true; }else{ return false; } } //验证后的操作 protected $_auto = [ ['ip','2',self::MODEL_UPDATE], //更新时为1 ['ip','1',self::MODEL_INSERT], //添加时为2 ['password', 'md5_pwd', self::MODEL_BOTH, 'callback'] ]; //默认参数就是字段的参数 public function md5_pwd($pas){ return md5($pas."abc"); } ``` 控制器中 ``` $member = D("Member"); //注意有 ! 号 if (!$member->create($this->postData)){ // 如果为$_POST提交则不选在create中传入数据 $this->error(303,$member->getError()); } $member->add(); ```
';