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

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

1. 静态查询是最基本的,也最具代表性。本节以数据库与模型静态查询来对比一下二者的区别,来结束本章的学习~

2. 二者查询上的区别:数据库查询:需要在查询之前设置数据表;

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

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

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

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

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

3. 我们用实例来对比二者之间查询方式的区别创建模型类:/application/index/mode/Staff.php<?php

namespace app\index\model;//导入模型类use think\model;class Staff extends model {//自定义模型类代码}

任务 :查询年龄age>50,工资低于9000的员工信息(要涨工资了吗?)我们先看一下要查询的结果是什么?

4cefc722cbf18e4bbaa4df3bf9637675.png

控制器:/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'] = ['

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值