(34) PHP 随笔---ThinkPHP 数据库以及数据模型
◇mysql数据库操作(增、删、改、查)
◇连接数据库配置:我们应该修改自己的config.php文件中的一些常量,方法如下:
◇在config.php里做数据库连接配置,把convertion.php中/*数据库配置*/下的数据库常量复制到config.php下,然后再进行配置。
◇制作model模型
◇model本身就是一个类文件
◇数据库中的每个数据表都对应一个model模型文件
◇最简单的数据模型类
◇实例化model的三种方式
◇1、$goods = new \命名空间\GoodsModel();
◇2、$good = D("模型标志");
◇例如a、$goods = D("Goods")
◇3、$obj = M();
◇1、可以实例化父类Model
◇2、可以直接调用父类Model里面的属性,获得数据库相关操作
◇3、自定义model就是一个空壳,没有必要实例化自定义的model
◇注:D()和M()方法的区别
◇D()是TP3.1.3里面对new 方法的简化
◇M()在使用就是实例化Model父类
◇数据查询
◇select()是数据模型的一个指定方法,可以获得数据表的数据信息。
◇1、配置Smarty
◇配置变量信息 convertion.php
◇BeHavior 行为配置变量信息(页面底部日志显示配置、smarty配置)
◇系统程序里面有一些零散的配置信息
◇2、具体使用(从ThinkPHP引擎变为Smarty引擎)
◇1、css样式如果有{},需要使用{literal}标签禁止smarty解析
◇2、关键字$Think变为$smarty
◇3、ThinkPHP默认引擎对关键常量进行替换,例如:__CONTROLLER__ __MODULE__ 但是smarty引擎不给替换,需要设置为{$smarty.const.__CONTROLLER__}
◇各种查询条件设置
◇$obj = D(标志); 创建对象
◇$obj -> select(); 查询数据
◇select 字段,字段 from 表明 where 条件 group 字段 having 条件 order 排序 limit 限制条数;
◇$obj -> field(字段,字段); 查询指定字段
◇$obj -> table(数据表); 通过具体数据表查询
◇$obj -> where(参数); 参数就是正常sql语句where后面的条件信息,(“good_price>100 and goods_name like '苹%'”)
◇$bj -> group(字段) 根据自端进行分组查询
◇$obj -> having(参数条件) having条件设置
◇$obj -> order(‘price desc/asc’) 排序查询
◇$obj -> limit([偏移量],条数) 从指定的偏移量条数开始,查询一定的条数,一般用来“分页”作用
◇查询数据信息
select()方法:
◇a、返回一个二维数组信息
◇b、返回全部数据信息表
◇c、给该方法传递参数:
◇1、select(30) 查询主键值等于30的记录信息
◇2、select(“10,12,14”) 查询主键值在10、12、14范围内的活动记录
◇注:如果我们查询的结果只有一个信息,要使用find()函数,返回的是一个一维数组,如果使用select()会返回一个二维数组为了使用方便。
◇having()方法设置查询条件,where()设置查询条件
◇having 和 where 区别
◇1、使用有先后顺序
◇2、where price>100 having price >100
◇3、where 设置条件,字段必须是数据表中存在的字段
◇4、having设置条件,字段必须是select语句查询出来的字段可以使用
◇两种都可以使用
◇例如:select price,name,number from goods where price > 100 可以
◇例如:select price,name,number from goods having price > 100 可以
◇只可使用where,不可以使用having
◇例如:select name,number from goods where price > 100 可以
◇例如:select name,number from goods having price > 100 不可以,因为查询的字段没有price
◇只可使用having,不可以使用where
◇例如:select goods_category_id,avg(goods_price) as ag from sw_goods group by goods_category_id having ag>1000 可以
◇例如:select goods_category_id,avg(goods_price) as ag from sw_goods where ag > 1000 group by goods_category_id 不可以,不能用as的名字
◇ThinkPHP中的相关聚合函数 count() sum() avg() max() min()
◇以上聚合函数是最后被调用的方法,用法如下:
$goods -> count(); $goods -> max('price'); $goods -> where("price > 1000") -> count();