Thinkphp5.0第二篇
查询构造器
//插入记录
$result=Db::table('think_data')->insert(['name'=>'张三','status'=>1]);
//修改数据
$result=Db::table('think_data')->where('id', 1)->update(['name'=>"陈国松",'status'=>0]);
//查询数据
$result=Db::table('think_data')->select();
(貌似修改数据不能以id修改可能是id加了AUTO_INCREMENT,能不用助手函数就不用助手函数)
链式操作
数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作。
使用也比较简单,假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排
序 ,代码如下:
Db::table('think_user')
->where('status',1)
->order('create_time')
->limit(10)
->select();
这里的 where 、 order 和 limit 方法就被称之为链式操作方法,除了select方法必须放到最后一个外
(因为select方法并不是链式操作方法),链式操作的方法调用顺序没有先后,例如,下面的代码和上面的等
效:
Db::table('think_user')
->order('create_time')
->limit(10)
->where('status',1)
->select();
其实不仅仅是查询方法可以使用连贯操作,包括所有的CURD方法都可以使用,例如:
Db::table('think_user')
->where('id',1)
->field('id,name,email')
->find();
Db::table('think_user')
->where('status',1)
->where('id',1)
->delete();
链式操作在完成查询后会自动清空链式操作的所有传值。简而言之,链式操作的结果不会带入后面的其它查询。
查询数据
$result=Db::name('data')->where('status',1)->find();
$result=Db::name('data')->where('status',1)->select();
find方法和select方法的区别在于find只能查到一个,而select是查询所有的。
查询表达式
模糊查询
$result=Db::name('data')->where('name','like','%陈%')->select();
区间查询
$result=Db::name('data')->where('id','BETWEEN',[2,4])->select();
一次性插入多条数据
$data=[
['name'=>"凌志林",'status'=>1],
['name'=>"林志颖",'status'=>2],
];
$result=Db::name('data')->insertALL($data);
更改字段值
$result=Db::name('data')->where('name','陈国松')->setField('name','陈松');
自增加一
$result=Db::name('data')->where('name','陈松')->setInc('status');
自减
$result=Db::name('data')->where('name','陈松')->setDec('status',2);
模型
Thinkphp5.0的模型是一种关系映射ORM的封装并且提供了简洁的ActiveRecord实现。一般来说,每个数据表会和一个"模型对应"。
模型类返回的是当前模型对象实例,模型是比Db类更高级的数据封装,支持模型关联,模型事件。
模型定义
首先创建一个数据表

然后新建如下文件及文件夹

其中model里的User.php如下
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
}
controller里面的User.php
<?php
namespace app\index\controller;
use app\index\model\User as UserModel;
class User{
//新增一条数据的方法
public function add()
{
echo 'hello';
$user =new UserModel();
$user->id=1;
$user->name='陈国松';
$user->email='liuyun@qq.com';
$user->birthday=strtotime('1989-7-11');
if( $user->save()){
return '用户新增成功';
}else{
return '用户新增失败';
}
}
}
地址栏这样访问(没有弄虚拟主机的)
http://localhost/thinkphp5.0/public/index.php/index/User/add
成功的话数据库会如下

Thinkphp5.0第二篇的更多相关文章
- Thinkphp5.0第一篇
THINKphp5.0框架 mvc moudle(数据)+view(表现层)+controller(业务逻辑) thinkphp5.0特点 中国人开发最符合国人习惯和思维方式 开源免费面向对象轻量级的 ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
原文地址: http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...
- (转载) 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁 ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- 前端工程师技能之photoshop巧用系列第二篇——测量篇
× 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...
- [转]Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...
- 第二篇.Bootstrap起步
第二篇Bootstrap起步 我们可以在http://getbootstrap.com下载bootstrap的文件 点击左边的download bootstrap可以下载bootstrap的css,j ...
- 【OpenGL】第二篇 Hello OpenGL
---------------------------------------------------------------------------------------------------- ...
随机推荐
- HDU4289Control 无向图拆点最大流
/* ** 无向图拆点,求最大流,最大流即为割点个数. */ #include <iostream> #include <cstdio> #include <cstrin ...
- codeforces H. Queries for Number of Palindromes(区间dp)
题目链接:http://codeforces.com/contest/245/problem/H 题意:给出一个字符串还有q个查询,输出每次查询区间内回文串的个数.例如aba->(aba,a,b ...
- codeforces 801 D. Volatile Kite(数学题)
题目链接:http://codeforces.com/contest/801/problem/D 题意:求出一个最大值D,使得一个给定的凸多边形任意点移动范围在半径为D的圆中,都不会构成一个凹都边形. ...
- DAX 第八篇:表连接
表连接是指两张表根据关联字段,组合成一个数据集.表连接不仅可以利用数据模型中已有的关系,而且可以利用DAX表达式基于表的任意列定义连接条件.因此,在DAX中,实现表与表之间的连接,有两种方式: 第一种 ...
- Storm 系列(六)—— Storm 项目三种打包方式对比分析
一.简介 在将 Storm Topology 提交到服务器集群运行时,需要先将项目进行打包.本文主要对比分析各种打包方式,并将打包过程中需要注意的事项进行说明.主要打包方式有以下三种: 第一种:不加任 ...
- FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...
- Redis的复制(Master/Slave)、主从复制、读写分离 (下)
哨兵模式(就是反客为主的自动版) 能够自动监控主机是否故障,如果故障了根据投票数自动将从机变成主机 1创建哨兵文件 touch sentinel.conf [root@localhost myredi ...
- pip安装路径
pip show 模块名称 即可查看pip安装的包所在路径. 如numpy: pip show numpy
- .Net Standard(.Net Core)实现获取配置信息
一.前言 在.Net Framework框架有专门获取webconfig配置的方法供我们使用,但是在.Net Core或者.Net Standard中没有可以直接使用的方法来获取配置文件信息,下面就来 ...
- MOOC web前端开发笔记(一)
网站和网页 网站 互联网上用于展示特定内容的相关网页的集合. 网页 网站中的一页,一个网站中的网页通过"超链接"的方式被组织在一起. 主页 进入网站看到的第一个网页,主页的文件名通 ...