微信小程序商城全栈开发 作业笔记 (十二)三种数据库操作方法

微信小程序商城全栈开发 作业笔记 (十二)三种数据库操作方法

(没有直接放代码,别介意呀,因为有些东西看不到,相信大家都有这个课程)

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连接数据库

猜你喜欢

转载自blog.csdn.net/qq_43204040/article/details/86603488
今日推荐