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() 方法
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
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() 方法
数据修改必须设置条件:where()或主键id值,二选一即可
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
4.在后台实现商品添加逻辑
1)制作添加表单
添加商品表单展示
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
收集表单信息实现数据写入数据库
在控制器操作方法里边收集表单信息
(tianjia()操作方法通过分支语句体现两个逻辑:展示表单和收集表单信息)
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
这里有一个redirect()方法仔细看图一下
redirect()方法跳转如果通过第二个参数传递信息,会在跳转后的地址里边体现出来
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
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() 方法
2)在操作方法里边通过定义形参接收传递的get参数信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
3)在upd.html模板里边展示被修改商品信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
4) 接收表单传递的数据、保存到数据库、页面跳转
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
如果使用$z=$goods->select($goods_id);dump($z)的话,可以看出返回是二维数组,这个时候使用find() 获得数据表记录信息,每次通过"一维数组"返回一个记录结果,model对象->find(); 获得第一个记录结果,model对象->find(数字); 获得"主键id值"等于数字条件的记录结果

upd方法有两个处理逻辑:展示表单、收集表单
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
在修改数据的form表单里边制作一个goods_id的隐藏域,以便接收该信息,
满足数据修改二选一条件设置(where()方法 或 主键id值)
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
6.数据删除操作delete
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
上面第三种方法$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() 方法
收集的用户注册信息
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
收集注册信息并存储数据库逻辑
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
2. 实现表单自动验证
create()方法收集表单信息同时的,也可以进行表单自动验证等功能。
I()函数默认的过滤原理:
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
表单自动验证的控制处理逻辑
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
上面图片代码中$user->getError()的值是由下面图片里面设置的错误提示
在UserModel重复父类成员$_validate定义验证规则
ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
$patchValidata=true时作用是一次性把$user->getError()的值也就是错误全部展示出来,举例:在用户名和密码都没填写的情况下一次性提示"用户名没填写"",“密码没填写”".不然的话就是一个一个的提示,在用户名和密码都没填写的情况下只提示"用户名没填写",填完用户名以后以后没写密码,这个时候告诉你"密码没填写"".

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

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