TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html
总结
在控制器中 模型操作
get() 和 all() 只能单独使用来查询数据
想要链式操作查询数据 需要使用find() 和select() 这里返回的都是对象集
2017-12-04
另外补充一点,很多人都问 是使用db类还是model 类。
这个其实没有明确的限定。tp5官网推荐使用model。
我接触了tp5也将近一年了。大多时间使用的还是model类 ,tp5提供的很多方法都是需要model类 来使用的,比如with 模型关联,获取器 等等 比较方便的方法,
而Db类 则针对于 使用比较单一的地方,。比如 获取配置表中的数据 ,不需要复杂的功能 只是单纯的查询数据,相对于来说使用db类比较好。不需要新建模型文件,直接查询即可。
还有就是关于DB和model的使用 速度的问题.Db是直接操作sql语句 速度肯定是比model快 但是 相对于model提供的各种方便的功能来说,牺牲一点运行速度是值得的, 而且 使用model带来的速度影响是在接受范围内的
更新时间 2017-07-22
准备工作 创建User控制器 User模型 User数据表
在User控制器中
- use app\console\model\User as UserModel;
- $user = UserModel::all();
- dump($user);
- exit();
- 这里会输出数据对象集 表示可用
- $user = UserModel::select();
- dump($user);
- exit();
- 输出的也是数据对象集
- $user = UserModel::get();
- dump($user);
- exit();
- 这里返回到是ID为1用户
- 尝试把ID为1的用户删除掉 返回的是ID为2的数据
- 所以这里直接使用get()不带参数 会返回一个根据ID正序排列的第一个数据对象
- $user = UserModel::find();
- dump($user);
- exit();
- 使用find() 和使用 get() 是一样的用法 单纯使用时
- $user = UserModel::where('id',5)->get();
- dump($user);
- exit();
- 这里会报错
- [ error ] method not exist:think\db\Query->get
- $user = UserModel::where('id',5)->find();
- dump($user);
- exit();
- 返回用户ID为5的对象 如果查找的用户数据不存在会返回null
- $user = UserModel::where('id',5)->select();
- dump($user);
- exit();
- 返回对象集
- $user = UserModel::where('id',5)->all();
- dump($user);
- exit();
- 报错 method not exist:think\db\Query->all
2017-07-18
假如有个Order模型 ,在尝试使用时有以下结果
- 使用 self::get();
- 获取数据时正确的
- self::with('user')->get()
- 这里会提示 method not exist:think\db\Query->get
- 只有单独get 时才会是正确的 ,不能够加入其他语句条件
TP5 模型类和Db类的使用区别的更多相关文章
- Jfinal中Db类的的使用
Jfinal提供了两种操作数据库的组件,分别是Model类和DB类,可以极大地减少代码量,提高开发效率. Db类提供了在Model类之外更丰富的的数据库操作能力,使用Db类以及嵌套的Record类时, ...
- TP5 模型CURD
ThinkPHP5的模型是一种对象-关系映射(Object / Relation Mapping ,简称 ORM)的封装,并且提供了简洁的ActiveRecord实现.一般来说,每个数据表会和一个“模 ...
- tp5数据库操作 Db类
一.链接数据库 1.配置文件定义 application\database.php 注意:数据表前缀更改,在文件的prefix选项 2.类定义 二.数据库的基本使用 namespace app\de ...
- 封装自己的DB类(PHP)
封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现.这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便! 1.封装一个DB类.一个类文件 ...
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
- 封装DB类
封装DB类 一般一个类单独书写在一个Php文件中,为了见名知意,会对文件名有一个规范:类名.class.php 第1步: 创建DB类 第2 步: 属性设计 第3步: 初 ...
- PHP——laravel之DB类->查询
DB类之查询: 满足条件的全部获取:DB::table("表名")->where("name",">","1" ...
- nodejs mongodb 数据库封装DB类 -转
使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关于mongoose的安装就是 npm install -g mongoose 这个DB类的数据库配置是 ...
- 域模型中的实体类分为四种类型:VO、DTO、DO、PO
经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...
随机推荐
- Jenkins实现PHP的自动部署
1.汉化jenkins 1).安装汉化包 系统管理 -> 插件管理 -> 安装插件 ->选择插件(Locale plugin) 2).设置语言为中文 系统管理 -> 系统设置 ...
- [转]用JavaScript在浏览器中创建下载文件
前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等. 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开 ...
- Windows Server 2016-图形化备份域控制器
上边几章节我们补充了有关Windows Server 2016系统层面的相关内容,本章切回Active Directory正题,继续围绕AD域相关内容进行不断梳理补充.Windows Server B ...
- Spring-Security 自定义Filter完成验证码校验
Spring-Security的功能主要是由一堆Filter构成过滤器链来实现,每个Filter都会完成自己的一部分工作.我今天要做的是对UsernamePasswordAuthenticationF ...
- 在windows上安装nginx
在windows上安装nginx 最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 首先需要到nginx的官网上下载最新版的nginx:http://n ...
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
接上篇<android开发艺术探索>读书笔记(十)--Android的消息机制 No1: 在Android中可以扮演线程角色的有很多,比如AsyncTask.IntentService.H ...
- 【CF 678F】Lena and Queries
Time Limit: 2000 ms Memory Limit: 512 MB Description 初始有一个空集合 n个操作 有三种操作,如下: 1 a b 表示向集合中插入二元组(a,b ...
- 看eShopOnContainers学一个EventBus
最近在看微软eShopOnContainers 项目,看到EventBus觉得不错,和大家分享一下 看完此文你将获得什么? eShop中是如何设计事件总线的 实现一个InMemory事件总线eShop ...
- java异常处理、多态
第一:GC是什么? 为什么要有GC? 第二:垃圾回收的优点和原理.并考虑2种回收机制. 第三:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 第 ...
- python基础 数据类型 判断语句
python 类unix系统默认已经安装或使用源码包./confighuremakemake install python运行方法 通过交互式解释器 [root@room1pc01 ~]# pytho ...