一、使用模型前准备工作
- 如果查询的表中有create_time时间字段,需要配置database.php,否则报格式错误
'datetime_format' => false,
- 默认返回数据非json格式,修改 config.json 配置文件中的 default_return_type 值
'default_return_type' => 'json',
- 统一数据库表命名格式 和 model类的命名格式
如果不使用统一格式,那么在模型类中需要指定数据库名
数据库表使用_连接的格式: user_info
model类使用大驼峰格式: UserInfo
二、模型简单使用
- 创建 application\api\model\UserInfo.php 模型,对应数据库中的 user_info 表
<?php
namespace app\api\model;
use think\Model;
class UserInfo extends Model
{
}
- 在 controller 中调用
通过主键的值来获取数据
<?php
namespace app\api\controller;
use app\api\model\UserInfo;
class Login
{
public function getInfo($id)
{
return UserInfo::get($id);
}
}
三、模型增删改查
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();
- 获取多条数据
通过 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. 模型添加数据
- 添加单条
如果用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();
- 添加多条
以数组的方式返回添加成功的数据给前端
默认主键批量新增,有主键批量修改
$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); // 有主键的情况下也执行批量新增
- 过滤无用字段
$userInfo = new UserInfo(input('param.'));
//非数据表字段数据不会写入
return $userInfo->allowField(['name','pwd'])->save();
// 只有name和pwd字段会写入
return $userInfo->allowField(['name','email'])->save();
3. 模型更新数据
- 修改单条
// 静态方法,成功后以对象的方式返回添加成功的数据
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);
});
- 修改多条
- 过滤无用字段
$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. 删除数据
- 删除单条
// 静态方法,通过主键删除数据,成功返回删除的条数
return UserInfo::destroy($id);
- 删除多条
// 静态方法,通过主键删除数据,成功返回删除的条数
$ids = [4,5,6];
return UserInfo::destroy($ids);
- 可删除单条也可删除多条,删除满足条件的数据
// 静态方法,按照条件删除,可删除多条,成功返回删除的条数
return UserInfo::destroy(['name' => $name]);
// 静态方法,按照条件删除,可删除多条,成功返回删除的条数
return UserInfo::where('id','>',$id)->delete();
// 静态方法,闭包按照条件删除
return UserInfo::destroy(function($query) use($id){
$query->where('id','>',$id);
});
网友评论