第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

第7章 数据库访问与ORM

https://coding.imooc.com/learn/list/97.html

目录:

  • 7-1 数据库操作三种方式之原生SQL 19:09
  • 7-2 从一个错误了解Exception的继承关系 13:23
  • 7-3 TP5数据库中间层架构解析 23:06
  • 7-4 查询构造器 一 13:28
  • 7-5 查询构造器 二 13:20
  • 7-6 查询构造器 三 11:12
  • 7-7 开启SQL日志记录 16:07
  • 7-8 ORM与模型 10:19
  • 7-9 初识模型 17:47
  • 7-10 模型定义总结 08:33
  • 7-11 静态调用还是实例对象调用 09:59
  • 7-12 几种查询动词的总结与ORM性能问题的探讨 16:47

 

7-1 数据库操作三种方式之原生SQL 19:09

thinkphp5支持的数据类型:

目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。

 

配置数据库连接信息:

默认是在application\database.php里配置的,

 第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

可以使用多个数据库连接,使动态定义连接信息用

动态定义连接信息:

 Db::connect($config)->query(select * from think_user where id=:id‘,[id‘=>8]);

 $config是一个单独的数据库配置,支持数组和字符串,也可以是一个数据库连接的配置参数名。

或者使用字符串方式:

 Db::connect(‘mysql://root:1234@127.0.0.1:3306/thinkphp#utf8‘);

例子:

 $user=\think\Db::connect(mysql://root:root@127.0.0.1:3306/tp5#utf8‘)->query(select * from user where id=?‘,[$id]);

字符串连接的定义格式为:

 数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集 

详细参考说明文档:

https://www.kancloud.cn/manual/thinkphp5/118059

thinkphp5,操作数据库的方式

  1. 使用原生的sql语句查询数据库.
  2. 使用构造器来查询查询数据库.
  3. 使用模型以及关连模型来查询数据库

1.使用原生的sql语句查询数据库.

配置了数据库连接信息后,我们就可以直接使用数据库运行原生SQL操作了,支持query(查询操作)和execute(写入操作)方法,并且支持参数绑定。

1 Db::query(‘select * from think_user where id=?‘,[8]);
2 Db::execute(‘insert into think_user (id, name) values (?, ?)‘,[8,‘thinkphp‘]);

也支持命名占位符绑定,例如:

1 Db::query(‘select * from think_user where id=:id‘,[‘id‘=>8]);
2 Db::execute(‘insert into think_user (id, name) values (:id, :name)‘,[‘id‘=>8,‘name‘=>‘thinkphp‘]);

 

 这样就不需要use think\Db; 这句了。

 think\Db::query(select * from think_user where id=?‘,[8]);

 Db::query(select * from think_user where name like :name,[name=>%德华%]); 

Db::execute(insert into think_user (id, name) values (:id, :name),[id=>8,name=>thinkphp]);

 

 1 <?php
 2 namespace app\index\controller;
 3 use \think\Controller;    
 4 use \think\Db; 
 5 
 6 class Index extends Controller
 7 {
 8     public function index()
 9     {
10         $data=Db::query(‘select * from sys_user where id=?‘,[1]);
11         dump($data);
12     }
13 }

实例:

要实现的功能:

控制器调用model层,从表里查出数据,model层将查出来的结果传给控制器,

控制器再返回json模式的数据

app\api\controller\v1\Banner.php控制器里:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Haima
 5  * Date: 2018/7/8
 6  * Time: 15:58
 7  */
 8 
 9 namespace app\api\controller\v1;
10 use app\api\model\Banner as BannerModel;
11 use app\api\validate\IDMustBePostiveInt;
12 use app\lib\exception\BannerMissException;
13 
14 class Banner
15 {
16     /**
17      * 获取指定id的banner信息
18      * @url /banner/:id
19      * @http GET
20      * @id banner的id号
21      */
22     public function getBanner($id)
23     {
24 
25         (new IDMustBePostiveInt())->goCheck(); //验证$id是否为正整数
26         $banner = BannerModel::getBannerById($id);//调用model
27         if (!$banner){
28            throw new BannerMissException(); //判断结果不存在,抛出异常
29         }
30         return json($banner,200);//返回json格式的结果, 默认就是200状态码,可不写
31     }
32 }

app\api\model\Banner.php的模型里:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Haima
 5  * Date: 2018/7/12
 6  * Time: 1:16
 7  */
 8 
 9 namespace app\api\model;
10 
11 
12 use think\Db;
13 
14 class Banner
15 {
16     public static function getBannerById($id){
17         //TODO 根据Banner 的 ID号 获取Banner信息
18         $result=Db::query(‘select * from banner_item where banner_id = ?‘,[$id]);
19         return $result;
20 
21     }
22 }

访问结果:

查出了四条数据

z.com/api/v1/banner/1?XDEBUG_SESSION_START=13378

第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

 



7-2 从一个错误了解Exception的继承关系 13:23



7-3 TP5数据库中间层架构解析 23:06



7-4 查询构造器 一 13:28



7-5 查询构造器 二 13:20



7-6 查询构造器 三 11:12



7-7 开启SQL日志记录 16:07



7-8 ORM与模型 10:19



7-9 初识模型 17:47



7-10 模型定义总结 08:33



7-11 静态调用还是实例对象调用 09:59



7-12 几种查询动词的总结与ORM性能问题的探讨 16:47

 

第7章 数据库访问与ORM 慕课网微信小程序开发学习笔记

上一篇:java Swing 之文本域控件的使用


下一篇:Java加密解密与数字证书的操作