thinkPHP学习笔记1829.docx
- 文档编号:30550123
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:17
- 大小:829.56KB
thinkPHP学习笔记1829.docx
《thinkPHP学习笔记1829.docx》由会员分享,可在线阅读,更多相关《thinkPHP学习笔记1829.docx(17页珍藏版)》请在冰豆网上搜索。
thinkPHP学习笔记1829
【知识回顾】
数据库模型model应用
mysql数据库操作(增、删、查、改)
【链接数据库配置】
convertion.php
config.php
1.在config.php里面做数据库链接配置
2.新建model,并修改其trueTablename属性
3.修改表前缀
4.字段缓存设置
tp框架执行过程中会使用到数据表中的字段信息,通过sql语句“showcolumsfromtable”,出于性能考虑,可以把字段缓存,避免每次重复执行SQL语句。
5.可以根据当前情况对model进行个性化设置
【实例化Model的三种方式】
1.$goods=new命名空间GoodModel();
2.$goods=D(“模型标志”);
a)$goods=D(“Goods”);
b)该¥goods是父类Model的对象,单操作的数据表还是sw_goods
c)$goods=D()实例化Model对象,没有具体操作数据表,与M()方法效果一致;
3.$obj=M();
a)实例化父类Model
b)可以直接调用父类Model里面的属性,获得数据库相关操作
c)自定义Model就是一个空壳,没必要实例化自定义model
d)$obj=M(“数据表标志”);实例化Model对象,实际操作具体的数据表
D()和M()的区别
前者是tp3.1.3里面对new操作的简化方法
后者在使用,就是实例化Model父类
两者都在函数库文件定义ThinkPHP/Common/functions.php
注意,如果没有对应的Model模型文件,也可以直接实例化model对象进行操作
D(),M()都可以实例化操作一个没有具体Model模型类文件的数据表
【数据查询】
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组,是数据表的全部信息
1.配置smarty
a)配置变量信息
(1)convertion.php
(2)Behavior.php(页面底部显示配置,smarty配置)
(3)系统里面还有一些零散的配置信息
b)在config.php里面配置smarty实用信息
模板引擎配置参数(不能直接修改,在config.php里面重写)
2.具体使用(从tp引擎变成smarty引擎)
a)css样式如果有{},需要使用{literal}标签禁止smarty解析
b)关键字$Think变为$smarty
3.tp引擎会对关键字常量进行替换,例如:
__CONTROLLER____MODEL__
smarty引擎不会给替换,需要设置为:
{$smarty.const.__CONTROLLER__}
【各种查询条件设置】
$obj=D(标志);创建对象
$obj->select();
select字段,字段from表名where条件groupby字段having条件orderby排序limit限制条数;
select%DISTINCT%%FIELD%from%TABLE%%JOIN%where%%group%%having%%order%%limit%%UNION%%COMMENT%
$obj->field(字段,字段);查询制定字段
$obj->table(数据表);通过具体数据表查询
$obj->where(参数);查询的限制条件
$obj->group(字段);根据分组进行查询
$obj->having(参数条件);having限制条件
$obj->order(“pricedesc/asc”);排序查询
$obj->limit([偏移量,]条数);查询条数限制
sql语句里面具体的设置条件在tp框架模型里边体现为体现为具体的方法操作
以上方法理论上都是父类model对应的方法
父类model具体存在的方法:
field(),where(),limit()
还有一些方法在__call()自动调用函数里面:
table(),group(),order(),having()
在__call()魔术方法里面会判断当前执行的方法是否是一个method属性的元素信息,如果存在就会执行
以上多个方法是同时使用多个进行显示(并且没有顺序要求)
$obj->limit(5)->field(‘id,name’)->order(‘pieceasc’)->table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到Model属性option里面,最后根据option拼装sql语句。
select()方法原理追踪
【查询数据信息】
$info=$goods->where()->field(字段)->select();
select()
1.返回一个二维数组信息
2.返回全部数据表信息
3.给该方法传递参数
a)select(30)查询主键值等于30的记录信息
b)select(’10,12,14’)查询主键值在10,12,14范围的记录信息
4.find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组,为了使用方便,我们会希望返回一个一维数组,这时候可以使用find()方法
5.having()方法设置查询条件,where()设置查询条件
having()和where()区别
(1)使用有先后顺序
(2)whereprice>100havingprice>100
(3)where设置查询条件,字段必须是数据表中存在的字段
(4)having设置条件,字段必须是select语句查询出来的条件可以使用
6.相关聚合函数count(),sum(),avg(),max(),min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:
$goods->where(‘goods_price>1000’)->count()大于1000元的商品的总数目
【实现数据添加add】
两种方式添加数据
1.数组方式数据添加
$goods=D(‘Goods’);
$arr=array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//注意:
goods_name和goods_weight是数据表中字段名称
$goods->add($arr);该方法返回当前被添加数据的主键值
2.AR数据实现数据添加
(1)ActiveRecord活跃记录
(2)AR规定了程序与数据库之间的关系
(3)每个字段对应该对象的具体属性
tp框架的AR是假的
$goods->D(‘Doods’);
$goods->goods_name=’htc_one’;
$goods->’goods_price=3000;’
$goods->add();
以上两种方式:
数组、AR,最后add都要把新记录的主键Id值返回
【搜集表单数据入库操作】
1.制作一个表单
2.通过$_POST搜集数据
3.在creat()搜集表单方法内部会过滤非法字段信息
4.信息提示并且页面跳转
【数据修改操作】
具体有两种方式实现数据修改,与添加类似(数组,AR方式)
1.数组方式
a)$goods=D(‘Goods’);
b)$ar=array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c)$goods->where(‘goods_id>50’)->save($ar);
2.AR方式
a)$goods=D(‘Goods’);
b)$goods->goods_id=53;
c)$goods->goods_name=’三星手机’;
d)$goods->goods_price=1200;
e)$goods->where(‘goods_id>50’)->save();;
以上两种方法如果可行,即要修改全部数据
以上sql语句从技术上可行,从业务逻辑上不可行(事故)
tp框架有智能考虑,以上的SQL语句不允许被执行
如何执行
(1)明确告诉系统哪条sql语句被update更新
(2)设置where条件
save()返回值
执行成功:
返回受影响的数据条数
执行失败:
false
【数据删除以执行原生sql语句】
$goods->delete(30);删除主键值等于30的记录信息
$goods->delete(’10,12,13’);删除主键值等于10,12,13的记录信息
$goods->where(‘goods_price>60’)->delete();把符合条件的记录都给删除
delete()返回值
执行成功:
返回受影响的数据条数
执行失败:
false
执行原生sql语句
1.查询语句query()返回一个二维数组信息
2.添加、修改、删除excute()返回受影响的记录条数
$goods=D(‘Goods’);
$sql=’select*fromsw_goods’;
$rst=$goods->query($sql);
$sql=”updateselectsw_goodssetgoods_name=’htc_one’wheregoods_id=100”;
$goods->excute($sql);
【数据修改具体实现】
通过路由给一个操作方法传递参数
http:
//网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值/
原则上三个参数接受信息的时候可以通过$_GET接收
例如:
_GET[‘变量名1’];
以上参数信息接收太直白,不安全,需要按照框架规则下边的方式接收GET参数信息
http:
//网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing
function($name,$age,$addr){
$name;
$age;
$addr
}
以上参数表述,如果再请求的时候没有按照规则传递参数,那么当前方法禁止访问(除非参数有默认值)。
修改商品信息步骤:
1.在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
2.在upd方法里面制作形式参数$goods_id,接收服务器传递的get变量good_id
3.在修改表单里面制作隐藏域goods_id,避免tp框架禁止修改语句执行
4.在upd操作方法内部有两个逻辑:
展现表单,搜集表单
【表单验证】
在服务器段通过tp框架进行表单验证
验证规则的第四个参数说明
注意:
1.模型实例化通过new
2.调用creat()方法才能触发验证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- thinkPHP 学习 笔记 1829