ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法

数据添加操作
调用方法:model对象->add()
具体两种方式使用:
① 数组方式
$数组 = array(
元素(键名=>值),
元素(键名=>值),
。。。。
)
$model(普通对象) -> add(数组);
注意:数组的元素键名与数据表字段的名称必须一致
② AR(Active Record活跃记录)方式
$model -> 属性 = 值;
$model -> 属性 = 值;
$model ->add();
注意:属性值 与 数据表字段一致,否则不给写入数据
AR规范要求:
A.一个model模型类与一个具体的数据表对应
B.model模型类实例化的对象 与 数据表的一条记录对应
C.model对象的属性 与 记录的字段对应
TP框架的AR是仿真产品,因为在每个业务/普通Model模型类里边并不存在对应数据表的字段信息。
add()方法返回新记录的主键id值
两种方式实现数据添加
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第1张图片
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第2张图片
3. 数据修改操作
调用方法:model对象->save()
与add添加一致具体两种方式使用:
① 数组方式
$model -> save(数组);
② AR方式
$model -> 属性(字段) = 值;
$model -> 属性(字段) = 值;
$model ->save();
注意:数组的元素下标(属性字段)必须与数据表字段保持一致
save()方法返回受影响的记录条数
mysql本身的语法规则允许一次性修改一个表的全部记录结果
在实际的项目里边,一般禁止修改数据表的全部数据
注意:数据修改必须设置条件,主键id 或 where()方法,二选一即可,否则执行失败。
在父类Model的save方法可以看到上述要的原理:
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第3张图片
数据修改必须设置条件:where()或主键id值,二选一即可
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第4张图片
4.在后台实现商品添加逻辑
1)制作添加表单
添加商品表单展示
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第5张图片
收集表单信息实现数据写入数据库
在控制器操作方法里边收集表单信息
(tianjia()操作方法通过分支语句体现两个逻辑:展示表单和收集表单信息)
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第6张图片
这里有一个redirect()方法仔细看图一下
redirect()方法跳转如果通过第二个参数传递信息,会在跳转后的地址里边体现出来
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第7张图片
5.在后台实现数据修改操作
pathinfo路由解析方式传递get参数信息格式:
http:网址/index.php/分组/控制器/操作方法/名称/值/名称/值
控制器操作方法接收get参数:
并不是直接使用$_GET接收信息,而是通过方法的形式参数接收。
function 方法名称($名称,$名称){}
传递的get变量名称与方法形参变量的名称必须一致
(形参参数在没有默认值的情况下,每次请求必须传递)
例如:
http://网址/index.php/Admin/Goods/upd/goods_id/171/goods_name/htc_two
上述url通过pathinfo路由传递了两个get参数信息,在upd操作方法里边要定义形参接收:
function upd($goods_id,$goods_name){
}
5.2 数据修改的实现步骤
1)通过pathinfo方式传递get参数信息,传递被修改的商品id信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第8张图片
2)在操作方法里边通过定义形参接收传递的get参数信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第9张图片
3)在upd.html模板里边展示被修改商品信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第10张图片
4) 接收表单传递的数据、保存到数据库、页面跳转
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第11张图片
如果使用$z=$goods->select($goods_id);dump($z)的话,可以看出返回是二维数组,这个时候使用find() 获得数据表记录信息,每次通过"一维数组"返回一个记录结果,model对象->find(); 获得第一个记录结果,model对象->find(数字); 获得"主键id值"等于数字条件的记录结果

upd方法有两个处理逻辑:展示表单、收集表单
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第12张图片
在修改数据的form表单里边制作一个goods_id的隐藏域,以便接收该信息,
满足数据修改二选一条件设置(where()方法 或 主键id值)
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第13张图片
6.数据删除操作delete
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第14张图片
上面第三种方法$model->delete(10)指的是删除主键为10的这行记录,第四种指的是将主键id10到21的记录删除掉

7.执行原生sql语句
$sql = “insert select update delete …”;
① 查询语句: $model对象 -> query($sql); 返回一个二维数组结果
② 添加/修改/删除语句: $model对象 -> execute($sql); 返回受影响记录条数

四. 实现表单自动验证
1.实现前台用户注册的功能
控制器:Home/Controller/UserController
操作方法: function register(){}
该方法两个逻辑:表单展示、收集表单
注册表单制作
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第15张图片
收集的用户注册信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第16张图片
收集注册信息并存储数据库逻辑
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第17张图片
2. 实现表单自动验证
create()方法收集表单信息同时的,也可以进行表单自动验证等功能。
I()函数默认的过滤原理:
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第18张图片
array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第19张图片
表单自动验证的控制处理逻辑
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第20张图片
上面图片代码中$user->getError()的值是由下面图片里面设置的错误提示
在UserModel重复父类成员$_validate定义验证规则
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第21张图片
$patchValidata=true时作用是一次性把$user->getError()的值也就是错误全部展示出来,举例:在用户名和密码都没填写的情况下一次性提示"用户名没填写"",“密码没填写”".不然的话就是一个一个的提示,在用户名和密码都没填写的情况下只提示"用户名没填写",填完用户名以后以后没写密码,这个时候告诉你"密码没填写"".

上面的规则在手册中"自动验证"可以查到.其中password2的confrim附加规则可以去了解一下

把验证的错误信息在模板中给展示出来
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第22张图片
{$errorinfo.username|default:’’}意思是没有的话显示默认为’’,有的话就显示错误信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法_第23张图片
create()方法作用收集表单、过滤表单信息、非法字段过滤、表单自动验证
并把处理好的信息返回

你可能感兴趣的:(ThinkPHP3.2.3)