原文: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类的使用区别的更多相关文章

  1. Jfinal中Db类的的使用

    Jfinal提供了两种操作数据库的组件,分别是Model类和DB类,可以极大地减少代码量,提高开发效率. Db类提供了在Model类之外更丰富的的数据库操作能力,使用Db类以及嵌套的Record类时, ...

  2. TP5 模型CURD

    ThinkPHP5的模型是一种对象-关系映射(Object / Relation Mapping ,简称 ORM)的封装,并且提供了简洁的ActiveRecord实现.一般来说,每个数据表会和一个“模 ...

  3. tp5数据库操作 Db类

    一.链接数据库 1.配置文件定义  application\database.php 注意:数据表前缀更改,在文件的prefix选项 2.类定义 二.数据库的基本使用 namespace app\de ...

  4. 封装自己的DB类(PHP)

    封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现.这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便! 1.封装一个DB类.一个类文件 ...

  5. nodejs操作mongodb数据库封装DB类

    这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...

  6. 封装DB类

    封装DB类     一般一个类单独书写在一个Php文件中,为了见名知意,会对文件名有一个规范:类名.class.php 第1步:     创建DB类 第2 步:     属性设计 第3步:     初 ...

  7. PHP——laravel之DB类->查询

    DB类之查询: 满足条件的全部获取:DB::table("表名")->where("name",">","1" ...

  8. nodejs mongodb 数据库封装DB类 -转

    使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关于mongoose的安装就是 npm install -g mongoose 这个DB类的数据库配置是 ...

  9. 域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

随机推荐

  1. Docker Centos7 下建立 Docker 桥接网络

    为什么要让docker桥接物理网络? docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是连接到docker0网卡上的.而docker0的ip段为172.1 ...

  2. 织梦搜索页使用arclist标签

    织梦默认不能在搜索页使用arclist标签,我们对代码做一些小改动即可 打开include/arc.searchview.class.php 一.查找代码: require_once(DEDEINC. ...

  3. 在gitlab上面创建私有库

    一.创建私有库1.使用xcode建立新的工程,选择Cocoa Touch Static Library,取名为podTest   WechatIMG1172.jpeg 2.创建一个类PodTest,给 ...

  4. Redis基础及入门

    一. 什么是 Redis            Redis 是一个可基于内存,有着完备的持久化机制并以 Key-Value 形式存储的非关系型数据库.也称为数据结构服务器.    二. Redis 的 ...

  5. MySQL主从复制_复制过滤

    关于主从过滤,建议只在从服务器做设定,在Master 端为保证二进制日志的完整, 不建议使用二进制日志过滤. Master 可用参数: binlog-do-db= #定义白名单,仅将制定数据库的相关操 ...

  6. Eclipse搭建Maven项目之准备工作

    Maven是优秀的Java项目对象模型解决方案,意为知识的积累(意地绪文),Maven可以方便的解决Java项目包依赖问题,通过配置pom.xml引入依赖,并自动引入其他依赖. 操作系统版本:wind ...

  7. 【2016北京集训测试赛(十六)】 River (最大流)

    Description  Special Judge Hint 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. 题解 题目大意:给定两组点,每组有$n$个点,有若干条跨组 ...

  8. 用pycharm+flask 建立项目以后运行出现ImportError: No module named flask-login问题

    出现此问题,一般情况下: 打开CMD输入: pip install flask-login 然后,在cmd中输入命令: pip list 查看目前已安装的的模板.在此时,如果你继续运行项目,有可能会发 ...

  9. filebeat.yml(中文配置详解)

    ################### Filebeat Configuration Example ######################### ####################### ...

  10. SQL 脚本持续收集...

    1.复制表 ---sqlserver (包括表结构和表数据) SELECT * INTO TABEL_NEW FROM TABLE_OLD---sqlserver(只复制表结构)CREATE TABL ...