php数据模型对比,10.数据库与模型查询对比

## 数据库查询与模型查询对比

#### 1. 静态查询是最基本的,也最具代表性。

>[info] 本节以数据库与模型静态查询来对比一下二者的区别,来结束本章的学习~

* * * * *

#### 2. 二者查询上的区别:

1. 数据库查询:需要在查询之前设置数据表;

2. 模型查询:因为已经与数据表绑定,所以不需要事先设置数据表;

3. 数据库查询:直接返回一维数组或者二维数组(表中原始数据);

4. 模型查询:返回数据对象,原始数据保存在属性$data数组中;

5. 数据库查询:直接调用连贯方法生成SQL语句进行查询;

6. 模型查询:通过魔术方法间接调用数据库方法完成查询。

* * * * *

#### 3. 我们用实例来对比二者之间查询方式的区别

* 创建模型类:/application/index/mode/Staff.php

~~~

namespace app\index\model;

//导入模型类

use think\model;

class Staff extends model {

//自定义模型类代码

}

~~~

**任务** :查询年龄age>50,工资低于9000的员工信息(要涨工资了吗?)

* 我们先看一下要查询的结果是什么?

![](https://box.kancloud.cn/d56d8fe634ec67151a2de4e250d21e10_663x308.png)

* 控制器:/application/index/controller/Index.php

~~~

namespace app\index\controller;

//导入模型类

use think\Db;

use app\index\model\Staff;

class Index {

public function index(){

//设置查询条件

$map = [];

$map['age'] = ['>',50];

$map['salary'] = ['

//数据库静态查询:返回结果集【二维数组】

$result1 = Db::table('tp5_staff')->where($map)->select();

//模型静态查询:返回结果集【数据对象数组】

$result2 = Staff::where($map)->select();

//输出数据库方式获取的结果集

dump($result1);

//模型查询结果是对象数组,必须用循环来遍历

foreach ($result2 as $data){

//获取数据对象原始数据

dump($data -> getData());

}

}

}

~~~

* 查询结果:

~~~

//数据库静态查询结果

array(2) {

[0] => array(7) {

["id"] => int(1004)

["name"] => string(9) "小龙女"

["sex"] => int(0)

["age"] => int(63)

["salary"] => float(2990)

["dept"] => int(2)

["hiredate"] => string(10) "2010-01-20"

}

[1] => array(7) {

["id"] => int(1024)

["name"] => string(9) "鲁大师"

["sex"] => int(0)

["age"] => int(60)

["salary"] => float(1300)

["dept"] => int(2)

["hiredate"] => string(10) "2012-09-09"

}

}

//模型静态查询结果,已用getData()方法处理过

//下面是查询到的原始数据:二维数组

array(7) {

["id"] => int(1004)

["name"] => string(9) "小龙女"

["sex"] => int(0)

["age"] => int(63)

["salary"] => float(2990)

["dept"] => int(2)

["hiredate"] => string(10) "2010-01-20"

}

array(7) {

["id"] => int(1024)

["name"] => string(9) "鲁大师"

["sex"] => int(0)

["age"] => int(60)

["salary"] => float(1300)

["dept"] => int(2)

["hiredate"] => string(10) "2012-09-09"

}

~~~

>[warning] 可以看出:二者查询结果完全一致

* * * * *

#### 4. 总结

>[success] 如果仅是简单的增、删、改、查操作,数据库查询完全可以满足要求。如果涉及到字段验证或复杂逻辑,必须要用模型来解决。实际上在开发,我们要坚持始终用模型操作数据库,以应对复杂多变的开发需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值