微信小程序商城全栈开发 作业笔记 (十二)三种数据库操作方法
(没有直接放代码,别介意呀,因为有些东西看不到,相信大家都有这个课程)
1.准备
正式编写业务代码
首先规范路由:加入
具体编写getBannerByID,id参数作为数据库的查询条件,读取数据库,返回给调用方
需要修改配置文件,app_debug为true,输入数据库名。。。
修改原来的getBanner方法
三种方法:
1.使用原生sql语句
2.使用构建器(Db)
3.使用模型以及关联模型(重要)ORM(Object Relation Mapping)对象关系映射
一:原生sql查询
断点调试看一下
也可以在POSTman里测试
在这里改动一下,加一个反斜杠
public function render(\Exception $e)
输入错误的URL路径,成功返回错误
url 错误的时候抛出的是 HttpException 错误,think/Exception 并不是 HttpException 的父类,转换时出现了问题,所以我们需要找到 think/Exception 与 HttpException 的共同的父类 \Exception
二:使用查询构建器
不用太在意数据库的sql差异性,读写操作都可以,最终会翻译成原生SQL语句
使用查询构建器
链式查询 返回查询对象
Db::table('banner_item')->where('banner_id','=',$id)
->select();
返回查询结果,返回数组
除了select操作还有 find(返回一条数据) update delete insert
*对应的where 也分三种:
1.表达式where('字段名','表达式','查询条件')
2.数组法 3.闭包。
updata:更新
delete:删除
insert:插入
链式方法注意:在SQL方法(find)之前,不同的链(table和where)没有先后顺序
相同的(table和table)有先后顺序
Db::table('banner_item')
Db::where('banner_id','=',$id)
$result Db::select();
select会消除之前的状态
表达式法
$result = Db::table('banner_item')->where('banner_id','=',$id)
->select();
return $result
闭包法
where加函数
$result = Db::table('banner_item')
->where(function ($query) use($id){
$query->where('banner_id','=',$id);
})
->select();
return $result;
whereOr
三:开启SQL日志
设置
访问一下,自动生成日志
还在入口index.php文件定义日志初始化
同样生成日志
四:使用模型以及关联模型ORM
使用ORM 查询数据库主要区别就是在写模型的继承think\model类,然后控制器就可以使用model的默认方法来获取数据而不是自己再在模型中专门写一个获取方法
单模型
首先引入TP5默认的Model
继承默认Model不用自己再编写
在 getBanner中,banner返回的是一个模型对象,而不是数组,这样操作更方便
看到返回的结果不是JSON,我们可以自己配置
但我们只拿到banner的信息,没有banner_item,那么需要关联模型
关联模型
可以多表关联
先指定对应的表:
protected $table ='';
新建一个banner_item模型
两种调用方法(一般优先考虑静态)
几种查询状态的关系:
get find all select
Db不可以get all 但模型可以find select
模型处理业务,Db连接数据库