ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:表映射到类,记录映射到对象。最大的特点就是使用方便和便于理解(因为采用了对象化),提供了开发的最佳体验,从而达到敏捷开发的目的。

大理石平台厂家

下面我们用AR模式来换一种方式重新完成CURD操作。

创建数据

  1. $User = M("User"); // 实例化User对象
  2. // 然后直接给数据对象赋值
  3. $User->name = 'ThinkPHP';
  4. $User->email = 'ThinkPHP@gmail.com';
  5. // 把数据对象添加到数据库
  6. $User->add();

如果使用了create方法创建数据对象的话,仍然可以在创建完成后进行赋值

  1. $User = D("User");
  2. $User->create(); // 创建User数据对象,默认通过表单提交的数据进行创建
  3. // 增加或者更改其中的属性
  4. $User->status = 1;
  5. $User->create_time = time();
  6. // 把数据对象添加到数据库
  7. $User->add();

查询记录

AR模式的数据查询比较简单,因为更多情况下面查询条件都是以主键或者某个关键的字段。这种类型的查询,ThinkPHP有着很好的支持。 先举个最简单的例子,假如我们要查询主键为8的某个用户记录,如果按照之前的方式,我们可能会使用下面的方法:

  1. $User = M("User"); // 实例化User对象
  2. // 查找id为8的用户数据
  3. $User->where('id=8')->find();

用AR模式的话可以直接写成:

  1. $User->find(8);

如果要根据某个字段查询,例如查询姓名为ThinkPHP的可以用:

  1. $User = M("User"); // 实例化User对象
  2. $User->getByName("ThinkPHP");

这个作为查询语言来说是最为直观的,如果查询成功,查询的结果直接保存在当前的数据对象中,在进行下一次查询操作之前,我们都可以提取,例如获取查询的结果数据:

  1. echo $User->name;
  2. echo $User->email;

如果要查询数据集,可以直接使用:

  1. // 查找主键为1、3、8的多个数据
  2. $userList = $User->select('1,3,8');

更新记录

在完成查询后,可以直接修改数据对象然后保存到数据库。

  1. $User->find(1); // 查找主键为1的数据
  2. $User->name = 'TOPThink'; // 修改数据对象
  3. $User->save(); // 保存当前数据对象

上面这种方式仅仅是示例,不代表保存操作之前一定要先查询。因为下面的方式其实是等效的:

  1. $User->id = 1;
  2. $User->name = 'TOPThink'; // 修改数据对象
  3. $User->save(); // 保存当前数据对象

删除记录

可以删除当前查询的数据对象

  1. $User->find(2);
  2. $User->delete(); // 删除当前的数据对象

或者直接根据主键进行删除

  1. $User->delete(8); // 删除主键为8的数据
  2. $User->delete('5,6'); // 删除主键为5、6的多个数据

ThinkPHP实现了ActiveRecords模式的ORM模型的更多相关文章

  1. 48.Python中ORM模型实现mysql数据库基本的增删改查操作

    首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...

  2. laravel框架总结(八) -- ORM模型

    ORM模型简介 1>什么是ORM? ORM,即 Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在操作具体的 ...

  3. eventloop & actor模式 & Java线程模型演进 & Netty线程模型 总结

    eventloop的基本概念可以参考:http://www.ruanyifeng.com/blog/2013/10/event_loop.html Eventloop指的是独立于主线程的一条线程,专门 ...

  4. Android开源库--ActiveAndroid(active record模式的ORM数据库框架)

    Github地址:https://github.com/pardom/ActiveAndroid 前言 我一般在Android开发中,几乎用不到SQLlite,因为一些小数据就直接使用Preferen ...

  5. Django ORM模型的一点体会

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...

  6. JavaScript状态模式及状态机模型

    这是一篇,我自己都看不完的文章... 文章大体就两部分: 状态模式的介绍 状态机模型的函数库javascript-state-machine的用法和源码解析 场景及问题背景: 我们平时开发时本质上就是 ...

  7. Django ORM模型:想说爱你不容易

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...

  8. ORM模型

    一.创建及映射(orm_intro_demo文件) 在项目新建App下的models.py文件下新建ORM模型: from django.db import models #如果要将一个普通的类变成一 ...

  9. django ORM模型表的一对多、多对多关系、万能双下划线查询

    一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_c ...

随机推荐

  1. IDea 工具debug模式详细使用说明

    IDea 工具debug模式详细使用说明 IDEA中如何使用debug调试项目 一步一步详细教程 Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生 ...

  2. Ctrl快捷键

    Ctrl + a - Jump to the start of the lineCtrl + b - Move back a charCtrl + c - Terminate the command ...

  3. JS与Jquery的事件委托机制

    传送:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委 ...

  4. IK的整个分词处理过程

    首先,介绍一下IK的整个分词处理过程: 1. Lucene的分词基类是Analyzer,所以IK提供了Analyzer的一个实现类IKAnalyzer.首先,我们要实例化一个IKAnalyzer,它有 ...

  5. 针对Java集合类的小总结

    Java集合类包位于java.util下,有很多常用的数据结构:数组.链表.队列.栈.哈希表等等.了解不同的集合类的特性在开发过程中是比较重要的,感谢@兰亭风雨的专栏分析,这里我也根据自己的理解做轻度 ...

  6. C++ vector操作--往列表中添加或更新内容

    有个列表,往里面添加内容,如果对象已存在,只更新其属性,否则添加新一项. #include <iostream> #include <string> #include < ...

  7. Ip HostName查询

    https://iplist.cc/api // 在线ip hostname查询

  8. Android开发 解决Installation failed due to XXX 问题

    报错信息 Android studio 安装app的时候以下报错 Installation did not succeed. The application could not be installe ...

  9. 关于jquery ajax项目总结

    $.ajax({        url:"../action/BorrowAction.php?action=oready",        async:true,//异步请求   ...

  10. [转]Redis实现缓存,你应该懂的哪些思路!

    场景一:类似于微博,实现关注和被关注功能. 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户.当用户A关注用户B的时候,执行两步操作: sadd user:A B sa ...