欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

数据库与模型查询比较

最编程 2024-04-04 11:10:07
...

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

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

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


2. 二者查询上的区别:

  1. 数据库查询:需要在查询之前设置数据表;
  2. 模型查询:因为已经与数据表绑定,所以不需要事先设置数据表;
  3. 数据库查询:直接返回一维数组或者二维数组(表中原始数据);
  4. 模型查询:返回数据对象,原始数据保存在属性$data数组中;
  5. 数据库查询:直接调用连贯方法生成SQL语句进行查询;
  6. 模型查询:通过魔术方法间接调用数据库方法完成查询。

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

  • 创建模型类:/application/index/mode/Staff.php
<?php
namespace app\index\model;//导入模型类use think\model;class Staff extends model {//自定义模型类代码}

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

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

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

<?phpnamespace app\index\controller;//导入模型类use think\Db;use app\index\model\Staff;class Index {  public function index(){  //设置查询条件
  $map = [];  $map['age'] = ['>',50];  $map['salary'] = ['<',9000];  //数据库静态查询:返回结果集【二维数组】
  $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"}

可以看出:二者查询结果完全一致


4. 总结

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

推荐阅读