ThinkPHP5.0增删改操作方法

1. 增加

1.1 单条增加

增加的数据存在数组里,然后调用table的insert方法。

    public function addOneNews(){
        $data = [
            "id" => 35,
            "content" => "新增加的内容",
            "author" => "moonlightgate",
            "price" => 888
        ];
        $result = DB::table("ksdt_cms_addonnews")->insert($data);
    }

操作成功后,返回值$result是影响的行数。
如果使用insertGetId($data)方法,则返回新增后的数据id。

1.2 批量增加

将要增加的数据放置在数组里面,然后使用table的insertAll方法。

public function addMoreNews(){
        $data = [
            [
                "id" => 36,
                "content" => "新增加的内容1",
                "author" => "moonlightgate",
                "price" => 888
            ],
            [
                "id" => 37,
                "content" => "新增加的内容2",
                "author" => "moonlightgate",
                "price" => 999
            ]
        ];
        DB::table("ksdt_cms_addonnews")->insertAll($data);
    }

2. 修改

2.1 where修改

  public function updateInfo(){
        $data = [
            "author" => "ROYOTECH"
        ];
        Db::table("ksdt_cms_addonnews")->where("id","36")->update($data);
    }

2.2 主键修改

如果修改的数组中包含主键,则无需再使用where。

public function updateInfo(){
        $data = [
            "id" => 36,
            "author" => "ROYOTECH"
        ];
        Db::table("ksdt_cms_addonnews")->update($data);
    }

2.3 运算修改

可以在update时使用inc,dec方法进行数值增减运算。

public function updateInfo(){
        Db::table("ksdt_cms_addonnews")->inc("price",2)->where("id",36)->update();
    }

2.4 MySQL函数修改

可以通过exp方法直接调用MySQL函数

    public function updateInfo(){
        Db::table("ksdt_cms_addonnews")->exp("author","LOWER(author)")->where("id",36)->update();
    }

2.5 raw方法修改

将运算过程通过raw函数写在数组里面,然后update

    public function updateInfo(){
        $data = [
            "id" => 36,
            "price" => Db::raw('price - 3'),
            "author" => Db::raw('upper(author)')
        ];
        Db::table("ksdt_cms_addonnews")->update($data);
    }

3. 删除

3.1 单条删除

    public function deleteInfo(){
        Db::table("ksdt_cms_addonnews")->delete(36);
    }

3.2 delete多条删除

    public function deleteInfo(){
        Db::table("ksdt_cms_addonnews")->delete([36,37]);
    }

3.3 where多条删除

    public function deleteInfo(){
        $where['id'] = array('in','1,2,3,4,5');
        Db::table("ksdt_cms_addonnews")->where($where)->delete();
    }

ThinkPHP5.0数据库查询入门及常用的几种数据库查询方式

1. 官方文档

本文内容参考Thinkphp5.0官方文档:https://www.kancloud.cn/manual/thinkphp5
为了你后期方便,将官方文档下载版本也一并奉上:
PDF版本:
ThinkPHP5.0完全开发手册-03091011
EPUB版本:
ThinkPHP5.0完全开发手册-03091011-EPUB
MOBI版本:
ThinkPHP5.0完全开发手册-03091011-MOBI

2. 配置数据库参数。

可以在以下文件中配置数据库链接信息:

application/database.php

3. 支持多种查询方式。

ThinkPHP5.0在开发的时候就考虑到了以下几个问题,所以以下查询都是支持的:

3.1 连接多种数据库

ThinkPHP5.0默认支持MySQL,SQLServer等数据库的链接,Oracle经过简单的配置也是支持的。

3.2 支持多种数据库

即便在配置信息中写定了某个数据库的链接信息,在实际查询数据库的时候,仍然可以单独制定数据库链接信息。所以,配置信息中的数据库可以写操作最频繁的数据库信息。其它数据库可以在连接时单独配置。

3.3 支持分布式数据库

ThinkPHP也支持主从类型的分布式数据库操作。

4. 常用的查询方式。

4.1 Controller通过DB::table

table的参数需要添加的是完整的数据库表名称。

$result = DB::table("ksdt_addonnews")->select();

4.2 Controller通过DB::name

name的参数需要添加的是无前缀的数据库表名称。

$result = DB::name("addonnews")->select();

4.3 通过Controller调用Model

4.3.1 建立model

在controller同级目录下新建model文件夹,并在该文件夹中新建数据表对应的model文件。

model的文件名和类名需要统一,会自动和数据表产生数据映射,model文件名和类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:

模型名 约定对应数据表(假设数据库的前缀定义是 think_)
User think_user
UserType think_user_type
4.3.2 撰写model代码
//数据库真实表名为:ksdt_cms_addonnews
//model文件名为:CmsAddonnews.php
<?php
namespace app\menus\model;
use think\Model;

class CmsAddonnews extends Model{

}
4.3.3 在controller中调用model
<?php
namespace app\menus\controller;
use app\menus\model\CmsAddonnews;
use think\Db;

class NewsList {
    public function doDbByModel(){
        $result = CmsAddonnews::select();
        var_dump($result);
    }
}

ThinkPHP框架URL结构详解

1. URL格式

http://网站域名/index.php/模块/控制器/方法/参数/参数值

其中index.php是可以省略的,因为不写index.php也会默认执行到index.php上。

2. 通过新建一个传参页面详解URL

2.1 功能说明

比如我们建立一个点菜模块叫menus,menus下面新建一个早餐的控制器叫Breakfast,Breakfast下面再新建一个打印菜单的方法叫showMenu(),并可以给该方法传参。

2.2 文件和目录结构

file

  • 需要注意的是,控制器文件Breakfast.php的文件名首字母必须大写。
  • 如果采用驼峰命名法比如BreakFast.php命名,那么访问该控制器的时候,URL路径上需要在驼峰字母中间添加下划线Break_Fast

    2.3 Breakfast.php代码

    
    <?php
    namespace app\menus\controller;

class Breakfast
{
public function showMenu($priceRange = "1000")
{
return "请提供价格小于".$priceRange."元的菜单!";
}
}


#### 2.4 代码,文件结构、URL的对应图
![file](http://www.moonlightgate.com/wp-content/uploads/2020/03/image-1583897364247.png)