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='[email protected]';

        $user->birthday=strtotime('1989-7-11');

      if( $user->save()){

          return '用户新增成功';

      }else{
          return '用户新增失败';

     }

    }

}

地址栏这样访问(没有弄虚拟主机的)

http://localhost/thinkphp5.0/public/index.php/index/User/add

成功的话数据库会如下

原文地址:https://www.cnblogs.com/chenguosong/p/11483207.html

时间: 2024-08-27 00:41:56

Thinkphp5.0第二篇的相关文章

Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界

这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用担心,这太简单了~! 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址:http://www.benmutou.com/blog/archives/804 文章来源:笨木头与游戏开发 3.0新亮点,史上最简单的物理引擎 在Cocos2d-x3.0里使用物理引擎,会很有快感,因为很多繁琐的东西它都帮我们封装好了. 那么,我要开始创建游戏的关卡场景了,大家跟紧了. 我们给关卡场景命名为Toll

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Wind

(转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

原文地址:  http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server2012系统配置指南> 四种集群的仲裁配置: 1.多数节点:这种配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供

Android Metro风格的Launcher开发系列第二篇

前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如何配置Android开发环境,只是用文字和图片展示了开发Metro风格Launcher的初步设计和产品要求,这一篇文章将会从代码上讲解如何实现对应的UI效果,好了,评书开讲! Launcher主体框架实现: Launcher主体框架我选用的是大家所熟悉的ViewPager控件,因为ViewPager

[C++11新特性]第二篇

0.可变数量参数,可变函数模版,变长模版类 c++98可变数量参数 #include<cstdio> #include<cstdarg> double SumOfFloat(int count, ...) { va_list ap; double sum=0; va_start(ap,count); for(int i=0;i<count;i++) sum+=va_arg(ap,double); va_end(ap); return sum; } int main() { p

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

chromium浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 2.获取depot_tools,解压,设置环境变量; 3.gclient获取python和git,svn,设置环境变量: 4.fetch–nohooks chromium –nosvn=true 获取源码: 5.gclientsyn

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.

认识IL代码---从开始到现在 &lt;第二篇&gt;

·IL代码分析方法 ·IL命令解析 ·.NET学习方法论 1.引言 自从『你必须知道.NET』系列开篇以来,受到大家很多的关注和支持,给予了anytao巨大的鼓励和动力.俱往昔,我发现很多的园友都把目光和焦点注意在如何理解IL代码这个问题上.对我来说,这真是个莫大的好消息,因为很明显我们的思路慢慢的从应用向底层发生着转变,技巧性的东西是一个方面的积累,底层的探索在我认为也是必不可少的修炼.如果我们选择了来关注这项修炼,那么我们就应该选择如何来着手这项修炼,首先关注anytao的『你必须知道的.N