TP框架学习笔记第二天

此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。

第二天概述

1.利用model模型实现数据的增删改查操作
a)添加操作
add方法,其返回新纪录的主键id值
两种方式:数组、AR方式
b)删除操作
delete(),返回删除的记录数目
delete(主键id),delete(‘id1,di2,id3…’)
c)修改操作
save(),返回被修改的记录数目
两种方式:数组、AR方式
条件要求:主键id或者where语句
d)查询操作
select(),返回二维数组信息
select(id) select(‘id1,id2,id3…’)
find(主键id),通过一维数组返回一条记录值
2.辅助方法
where() field() limit()
order() group() having()
3.后台商品的添加修改操作
商品添加:添加数据表单,收集表单信息 create()方法
商品修改:修改按钮、展现修改表单、收集表单信息
get参数传递使用
http://网址/index.php/分组/控制器/方法/参数名1/.参数值1/参数名2/参数值2…
function( 1, 参数名2…)
4.注册表单自动验证
(1)通过create方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。
(2)验证规则(UserModel.class.php)
protected $_validate = array(
array(字段,规则,错误提示,条件,附加规则,时间),
);

1.数据库操作Model模型

1.1数据库配置
这里写图片描述
1.2创建Model模型类
原则上每个数据表都对应一个Model模型类。
这里写图片描述
1.3Model对象的两种实例化方式
1.3.1实例化普通的Model对象
model=new\Model\XXXModel();Modelmodel1.3.2Model model = D();//实例化基类Model,没有任何关联表
$model = D(‘Goods’);//实例化基类Model,并操作xx_goods数据表
(该方式即使我们不创建具体的Model模型类文件,也可以对数据表的数据进行操作)
如果一个数据表没有特殊要求,就可以通过D(XX)进行操作。
如果数据表有特殊方法要求(例如用户名和密码判断一个特殊方法),就需要在普通Model模型类里面定义好,通过new \Model\XXXModel()形式实例化对象,进而操作特殊方法。
这里写图片描述

2.数据库基本操作

2.1数据查询操作
调用方法:model对象->select();
具体使用:
model>select();// model->select(主键id值); //查询并返回数据表中条件等于id的数据信息
$model->select(‘主键id1,主键id2,主键id3…’);//查询主键信息在搜索范围内的数据信息
使用select方法始终返回一个二维数组。
这里写图片描述
2.1.1具体数据操作方法的使用
(1)where条件
model>where();//sqlwhere2limit model->limit(数字); //严格查询数字条数的记录
(3)field限制查询字段
model>field(1,2,3);4order model->order(‘排序条件asc/desc’);
(5)group分组查询group by
$model->group(分组条件);
select count(*) from sw_goods //商品总记录数目
select goods_brand_id,count(*) from sw_goods group by goods_brand_id //查询每个品牌下的商品的总记录数
select goods_brand_id,avg(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的平均价格
select goods_brand_id,max(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的最高价格
select goods_brand_id,min(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的最低价格
select goods_brand_id,sum(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的总价格
(6)having条件设置方法
having设置条件查询的效果与where效果类似
区别:
where:语句条件字段,必须是数据表中存在的字段
having:语句条件字段,必须是查询结果集中存在的字段
以上两个关键字在某些场合可以互换使用:
(1)两者通用
select goods_id,goods_name, goods_price from sw_goods where goods_price>100
select goods_id,goods_name, goods_price from sw_goods having goods_price>100
(2)只能使用where
select goods_id,goods_name from sw_goods where goods_price>100
select goods_id,goods_name from sw_goods where goods_price>100//错误
因为在查询结果集中没有goods_price但是数据库表中有这个字段。
(3)只能用having
select goods_grand_id,avg(goods_price) as ag from sw_goods group by goods_brand_id havingag>100
select goods_grand_id,avg(goods_price) as ag from sw_goods group by goods_brand_id where ag>100//错误
因为在查询结果集中有ag但是在数据库表中没有ag字段。
where()/limit()/field()三个方法直接存在于父类的Model里边
having()/order()/group()三个方法存在于Model的魔术方法__call()里边。
这里写图片描述
//数据操作常用方法
//1.where限制查询条件
info= goods->where(‘goods_price>1000 and goods_name like “%n%”’)->select();
//2.limit限制条数(limit(长度),limit(偏移量,长度))
info= goods->limit(3)->select();
info= goods->limit(1,3)->select();
//3.field限制查询字段
info= goods->field(‘goods_name,goods_price’)->select();
//4.order排序(默认升序,降序格式:字段+空格+desc)
info= goods->order(‘goods_price’)->select();
//5.group分组查询
info= goods->field(‘goods_brand_id,min(goods_price)’)
->group(‘goods_brand_id’)->select();
dump( info);//6.having info = goods>field(goodsbrandid,min(goodsprice))>group(goodsbrandid)>having(min(goodsprice)>0)>select();dump( info);
2.2数据添加操作
调用方法:add()
具体两种方式使用:
(1)数组方式
=array(=>,=>,); model->add( );2ARActiveRecord model->属性(字段)=值;//属性字段必须与数据库表字段一致
model>=;. model->add();
AR规范要求:
<1>一个model模型类与一个具体的表对应
<2>model类模型的实例化的对象与数据表的一条记录对应
<3>model模型类对象的属性与记录的字段对应
TP框架的AR是仿真产品,因为每个业务Model模型里边并不存在对应数据表的字段信息。
add方法执行成功后会返回一个生成的id值。
这里写图片描述
在模型中不添加字段,直接对对象的不存在的属性进行赋值。执行魔术方法__set()。
这里写图片描述
2.3数据修改操作
调用方法:model对象->save();
与add添加一样有两种方式:
(1)数组方式 model>save();2AR model->字段=值;$model->save();
save方法返回受影响的行数,其中数组中必须有数据库表的主键,AR方式中必须指定主键值。
【注意】
数据修改必须设置条件,主键id或者where方法,二选一即可,否则执行失败。
这里写图片描述
2.4数据删除操作(删除操作最好假删除,用一个is_del字段标记是否被删除,以防恢复数据)
同样是两种方式:
model>where()>delete();AR model->user_id=8;
z= model->delete();
或者其他:
model>delete(10); model->delete(“10,23”);
2.5收集表单实现添加、修改操作
这里写图片描述
修改操作:
修改展示表单传递参数id
这里写图片描述
在修改页面添加隐藏域:
这里写图片描述
这里写图片描述
2.6执行原生的sql语句
sql=selectfrom.;1 model->query( sql);//2// model->execute($sql); //返回受影响条数

3.表单自动验证的功能

1.实现前台用户注册功能
2.实现表单的自动验证
create()方法收集表单数据的同时,也可以进行表单的自动验证等功能。
这里写图片描述
在user模型中开启批量处理:
这里写图片描述
验证的一些规则:
// array(字段,验证规则,错误提示[,验证条件,附加规则,验证时间]),
// 注意:后三项为可选项,验证条件为0,1,2
// 针对POST中的数据,0代表存在字段就验证,1代表必须验证,2代表值不为空时验证
// 比如该字段在表单中,通过post传递过来时,0和1验证,2当值为空时不验证
// 附加规则有很多种,下面介绍了几种,一般与验证规则一块用
// 验证时间为1,2,3,1代表新增数据时验证,2代表修改数据时验证,3代表全部情况下验证(默认)
// 比如创建时间只在新增数据的时候验证,修改时间只在修改数据时验证
这里写图片描述
验证的代码:
这里写图片描述
爱好验证的回调函数:
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值