增删改查与验证
最后更新于: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();
```
';