美文网首页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 模型增删改查

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