TP框架学习笔记第二天

时间:2024-10-27 13:55:19
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()里边。
这里写图片描述
//数据操作常用方法
//限制查询条件
info= goods->where(‘goods_price>1000 and goods_name like “%n%”’)->select();
//限制条数(limit(长度),limit(偏移量,长度))
info= goods->limit(3)->select();
info= goods->limit(1,3)->select();
//限制查询字段
info= goods->field(‘goods_name,goods_price’)->select();
//排序(默认升序,降序格式:字段+空格+desc)
info= goods->order(‘goods_price’)->select();
//分组查询
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); //返回受影响条数