美文网首页js css html
thinkphp5.0 模型增删改查

thinkphp5.0 模型增删改查

作者: 暴躁程序员 | 来源:发表于2023-02-02 10:27 被阅读0次

一、使用模型前准备工作

  1. 如果查询的表中有create_time时间字段,需要配置database.php,否则报格式错误
'datetime_format' => false,
  1. 默认返回数据非json格式,修改 config.json 配置文件中的 default_return_type 值
'default_return_type'    => 'json',
  1. 统一数据库表命名格式 和 model类的命名格式
    如果不使用统一格式,那么在模型类中需要指定数据库名
数据库表使用_连接的格式:     user_info
model类使用大驼峰格式:      UserInfo

二、模型简单使用

  1. 创建 application\api\model\UserInfo.php 模型,对应数据库中的 user_info 表
<?php

namespace app\api\model;

use think\Model;

class UserInfo extends Model
{

}
  1. 在 controller 中调用
    通过主键的值来获取数据
<?php

namespace app\api\controller;

use app\api\model\UserInfo;
class Login
{
    public function getInfo($id)
    {
        return UserInfo::get($id);
    }
}

三、模型增删改查

1. 模型查询数据

  1. 获取单条数据,不存在返回null
// get 通过主键查询单条,以对象的方式返回单条数据给前端,失败返回null
return UserInfo::get($id);

// 通过某个字段来获取数据,比如:id字段
return UserInfo::getById($id);

// 通过多个字段来获取数据,比如:name字段和pwd字段
return $user = UserInfo::get(['name' => $name,'pwd' => $pwd]);

// 通过闭包的方式传入查询条件
return UserInfo::get(function ($query) use ($name,$pwd){
    $query -> where('name','=',$name)->where('pwd','=',$pwd);
});

// 通过实例化模型对象和链式的方式获取数据
return (new UserInfo())->where('name','=',$name)->where('pwd','=',$pwd)->find();
return UserInfo::where('name','=',$name)->where('pwd','=',$pwd)->find();
  1. 获取多条数据
    通过 id字段获取,不存在返回[]
// all 通过主键查询多条,以数组的方式返回单条数据给前端,失败返回[]
return UserInfo::all($id);

// 通过多个字段来获取数据,比如:name字段和pwd字段
return $user = UserInfo::all(['name' => $name,'pwd' => $pwd]);

// 通过闭包的方式传入查询条件
return UserInfo::all(function ($query) use ($name,$pwd){
    $query -> where('name','=',$name)->where('pwd','=',$pwd)->limit(3);
});

// 通过实例化模型对象和链式的方式获取数据
return (new UserInfo())->where('name','=',$name)->where('pwd','=',$pwd)->select();
return UserInfo::where('name','=',$name)->where('pwd','=',$pwd)->select();

2. 模型添加数据

  1. 添加单条
    如果用save方法进行多次数据写入的时候,需要注意,第二次save方法的时候必须使用isUpdate(false),否则会视为更新数据。
// 通过静态create方法获取数据,以对象的方式返回添加成功的数据
return UserInfo::create(['name'=>$name,'pwd'=>$pwd]);

// 实例化模型对象,通过赋值的方式传参,成功可返回1,也可返回自增id
$userInfo  = new UserInfo();
$userInfo->name = $name;
$userInfo->pwd = $pwd;
//return $userInfo->save(); // 成功返回1
$userInfo->save();
return $userInfo->save()-> id; // 返回自增id

// 实例化模型对象,通过构造函数传参,成功返回1
return (new UserInfo(['name'=>$name,'pwd'=>$pwd])) -> save();

// 实例化模型对象,通过save方法传参,成功返回1
return (new UserInfo()) -> data(['name'=>$name,'pwd'=>$pwd]) -> save();
  1. 添加多条
    以数组的方式返回添加成功的数据给前端
    默认主键批量新增,有主键批量修改
$userInfo  = new UserInfo();
$list = [
    ['name'=>$name,'pwd'=>$pwd],
    ['name'=>$name,'pwd'=>$pwd],
    ['name'=>$name,'pwd'=>$pwd]
];
return $userInfo->saveAll($list); // 默认无主键批量新增,有主键批量修改
//return $userInfo->saveAll($list,false); // 有主键的情况下也执行批量新增
  1. 过滤无用字段
$userInfo  = new UserInfo(input('param.'));
        
//非数据表字段数据不会写入   
return $userInfo->allowField(['name','pwd'])->save();

// 只有name和pwd字段会写入
return $userInfo->allowField(['name','email'])->save();

3. 模型更新数据

  1. 修改单条
// 静态方法,成功后以对象的方式返回添加成功的数据
return UserInfo::update(['id'=>7,'name'=>$name,'pwd'=>$pwd])+;

// 静态方法,成功后返回1
return UserInfo::where('id', 2)->update(['name'=>$name,'pwd'=>$pwd]);

// 实例化模型的方式,成功后返回1
$userInfo  = new UserInfo();
return $userInfo->save(['name'=>$name,'pwd'=>$pwd],['id' => 3]);

// 闭包的方式,成功后返回1
$userInfo  = new UserInfo();
return $userInfo->save(['name'=>$name,'pwd'=>$pwd],function($query) use ($id){
    $query->where('id','=', $id);
});
  1. 修改多条

  1. 过滤无用字段
$userInfo  = new UserInfo();
        
//非数据表字段数据不会写入修改   
return $userInfo->allowField(true)->save(input('param.'),['id' => 6]);

// 只有name和pwd字段会写入修改
return $userInfo->allowField(['name','pwd'])->save(input('param.'),['id' => 4]);

3. 删除数据

  1. 删除单条
// 静态方法,通过主键删除数据,成功返回删除的条数
return UserInfo::destroy($id);
  1. 删除多条
// 静态方法,通过主键删除数据,成功返回删除的条数
$ids = [4,5,6];
return UserInfo::destroy($ids); 
  1. 可删除单条也可删除多条,删除满足条件的数据
// 静态方法,按照条件删除,可删除多条,成功返回删除的条数
return UserInfo::destroy(['name' => $name]);

// 静态方法,按照条件删除,可删除多条,成功返回删除的条数
return UserInfo::where('id','>',$id)->delete();

// 静态方法,闭包按照条件删除
return UserInfo::destroy(function($query) use($id){
    $query->where('id','>',$id);
});

相关文章

  • thinkphp5.0 模型增删改查

    一、使用模型前准备工作 如果查询的表中有create_time时间字段,需要配置database.php,否则报格...

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 0812 A

    mongodb 增删改查 增: db.createCollection("name", {options:numb...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

  • SQL查询结构总结

    SQL 增删改查 对数据库有修改的操作是:增删改 增 insert into 表名 values(); 删 del...

  • 2018-03-03

    rails c增删改查 增:user = User.create(name:'Jack', age:'18') 删...

  • 函数和增删改查(运用)

    增删改查 (基本命令) 1 . 增 inset(position,value)append(value)exten...

  • 表内容的操作

    对表数据进行增删改查(curd) 增(insert into): auto_increment自增长 SELECT...

网友评论

    本文标题:thinkphp5.0 模型增删改查

    本文链接:https://www.haomeiwen.com/subject/gwvwhdtx.html