热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小Qthinkphp笔记

CURD的意思就是数据库四种操作的合称,即“Create,Update,Read,Delete(创建,修改,读取,删除)”,在开发指南里也有详细介绍.ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对数据库操作.

CURD的意思就是数据库四种操作的合称,即“Create,Update,Read,Delete(创建,修改,读取,删除)”,在开发指南里也有详细介绍.

ThinkPHP 提供了灵活和方便的数据操作方法,不仅实现了对数据库操作的四大基本操作(CURD):创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了 ActiveRecords 模式的最佳体验.

Model 类将数据库操作统一为 CURD 和一个 SQL 查询方法,也就是

_create 新增 (写入)数据

_update 更新 (保存)数据

_read 读取(查询)数据

_delete 删除数据

_query SQL 查询

其它的所有方法基本上对你调用这些基础方法进行操作,但是我们无需关注这些细节,只需要按照提供的抽象方法来操作,我们来看看在 ThinkPHP 中是怎么进行数据操作的.

1、新建记录

  1. // 实例化一个 User 模型对象 
  2. $User = new UserModel(); 
  3. // 然后给数据对象赋值 
  4. $User‐>name = ‘ThinkPHP’; 
  5. $User‐>email = ‘ThinkPHP@gmail.com’; 
  6. // 然后就可以保存新建的 User 对象了 
  7. $User‐>add(); 
  8.  
  9. // 如果需要锁实例化模型对象的时候传入数据,可以使用 
  10. $data[‘name’] = ‘ThinkPHP’; 
  11. $data[‘email’] = ‘ThinkPHP@gmail.com’; 
  12. $User = new UserModel($data); 
  13. $User‐>add(); 
  14.  
  15. // 或者直接在 add 方法传入要新建的数据 
  16. $data[‘name’] = ‘ThinkPHP’; 
  17. $data[‘email’] = ‘ThinkPHP@gmail.com’; 
  18. $User = new UserModel(); 
  19. $User‐>add($data); 

如果你的主键是自动增长类型,不需要传入主键的值就可以新建数据,并且如果插入数据成功的话,Add 方法的返回值就是最新插入的主键值,可以直接获取.

$insertId   =   $User‐>add($data);

一般情况下,应用中的数据对象不太可能通过手动赋值的方式写入,而是有个数据对象的创建过程.

ThinkPHP 提供了一个 create 方法来创建数据对象,然后进行其它的新增或者编辑操作.

  1. $User = D(“User”); 
  2. $User‐>create(); // 创建 User 数据对象,默认通过表单提交的数据进行创建 
  3. $User‐>add(); // 新增表单提交的数据 
  4. Create 方法支持从其它方式创建数据对象,例如,从其它的数据对象,或者数组等 
  5. $data[‘name’] = ‘ThinkPHP’; 
  6. $data[‘email’] = ‘ThinkPHP@gmail.com’; 
  7. $User‐>create($data); 
  8.  
  9. // 从 User 数据对象创建新的 Member 数据对象 
  10. $Member = D(“Member”); 
  11. $Member‐>create($User); 
  12. 支持新增多条记录 
  13.  
  14. $User = new UserModel(); 
  15. $data[0][‘name’] = ‘ThinkPHP’; 
  16. $data[0][‘email’] = ‘ThinkPHP@gmail.com’; 
  17. $data[1][‘name’] = ‘流年’; 
  18. $data[1][‘email’] = ‘liu21st@gmail.com’; 
  19. $User‐>addAll($data); 

在 MySql 数据库下面,会自动使用一条 SQL 语句实现多数据的插入.

2、查询记录

读取数据库的记录我觉得是数据库操作中的最有意思的一件事情了,写过文本数据库的人都知道,保存和删除数据不难(无非是规范和效率问题),难在可以通过各种方式来查找需要的数据,ThinkPHP 通过各种努力,让数据库的查询操作变得轻而易举,也让 ThinkPHP 变得富有内涵.

ThinkPHP 有一个非常明确的约定,就是单个数据查询和多个数据查询的方法是分开的,或者你会认为有时候自己也不知道要查询的数据是单个还是多个,但是有一点是明确的,你需要的是返回一个数据还是希望返回的是一个数据集,因为对两种类型的返回数据的操作方式是截然不同的,无论何种方式的返回,我们都可以直接在模型对象里面操作,当然也一样可以作为数据传递给你需要的变量.

先举个最简单的例子,假如我们要查询主键为 8 的某个用户记录,我们可以使用下面的一些方法:

$User‐>find(8);

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

$name = $User‐>name;

$email = $User‐>email;

遍历查询到的数据对象属性

  1. foreach ($User as $key=>$val){ 
  2. echo($key.’:’.$val); 
  3. // 或者进行相关的数据更改和保存操作 

也可以用变量保存下来以便随时使用。

$user = $User‐>find(8);

对于上面的查询条件,我们还可以使用getById 来完成相同的查询.

$User‐>getById(8);

需要注意的是,对于 find 方法来说,即使查询结果有多条记录,也只会返回符合条件的第一条记录,如果要返回符合要求的所有记录,请使用 findAll 方法.

  1. // 查询主键为 1、3、8 的记录集 
  2. $User‐>findAll(‘1,3,8’); 
  3. // 遍历数据列表 
  4. foreach ($User as $vo){ 
  5. dump($vo‐>name); 

3、更新记录

了解了查询记录后,更新操作就显得非常简单了.

  1. $User‐>find(1); // 查找主键为 1 的数据 
  2. $User‐>name = ‘TOPThink’; // 修改数据对象 
  3. $User‐>save(); // 保存当前数据对象 
  4. // 还可以使用下面的方式更新 
  5. $User‐>score = ‘(score+1)’; // 对用户的积分加 1 
  6. $User‐>save(); 

如果不是使用数据对象的方式来保存,可以传入要保存的数据和条件.

  1. $data[‘id’] = 1; 
  2. $data[‘name’] = ‘TopThink’; 
  3. $User‐>save($data); 

除了 save 方法外,你还可以使用 setField 方法来更新特定字段的值,例如:

$User‐>setField(“name”,”TopThink”,’id=1’);

同样可以支持对字段的操作

  1. $User‐>setField(“score”,”(score+1)”,’id=1’); 
  2. // 或者改成下面的 
  3. $User‐>setInc(“score”,’id=1’); 

4、删除记录

  1. $User‐>find(2); 
  2. $User‐>delete(); // 删除查找到的记录 
  3. $User‐>delete(‘5,6’); // 删除主键为 5、6 的数据 
  4. $User‐>deleteAll(); // 删除查询出来的所有数据 

推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
author-avatar
wjw0000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有