新建模型
- 手动新建
a. 打开前端模块(如D:\htdocs\tp5\application\index)
新建model文件夹
b. 在model文件夹下新建User.php
namespace app\index\model;
//导入系统的数据模型
use think\Model;
//声明Uset模型
class User extends Model{
}
- dos命令新建
a.打开cmd,切换到项目目录
输入 php think make:model app\index\model\Users.php
模型的实例化
查询操作
1.调用静态方法
$res = User::get(1);
dump($res->toArray());
2.实例化模型
$user = new User();
$res = $user::get(24);
dump($res->toArray());
查询操作
1.查询单条数据
//get方法
//默认找主键
$res = User::get(1);
//默认查找用户名
$res = User::get(["name"=>"wjc"]);
2.查询多条数据
//默认查询所有数据
$res = User::all();
//字符串
$res = User::all("1, 24, 25");
//数组
$res = User::all([1, 24, 25]);
//数组
$res = User::all(["pass"=>"123"]);
3.获取某个字段某列值
//获取某个值
$res = User::where("id", 1)->value("name");
//获取某列值
$res = User::column("name", "id");
4.动态查询
//查询匹配到的第一条数据
//getBy字段名
$res = User::getByName("wjc");
$res = User::getByPass("444");
增加操作
1.设置对象属性
$user = new User();
//设置相应的列的值
$user->name = "wjc1";
$user->pass = "abc";
$user->age = 18;
dump($user->save());
2.通过data方法
$user ->data([
"name"=>"wjc2",
"pass"=>110,
"age"=>19
]);
dump($user->save());
3.实例化(并设置过滤错误字段)
$user = new User([
"name"=>"fh",
"pass"=>"123",
"age"=>20,
"sex"=>"1"
]);
//通过allowField(true)反复剔除错误字段
dump($user->allowField(true)->save());
//指定插入数据库字段
$user->allowField(["name", "age"])->save()
4.增加多条数据
$user = new User();
$list = [
["name"=>"wjc5", "pass"=>123, "age"=>20],
["name"=>"wjc6", "pass"=>123, "age"=>20],
["name"=>"wjc7", "pass"=>123, "age"=>20]
];
$user->saveAll($list);
5.create方法增加数据
$user = User::create([
"name"=>"wjc7",
"age"=>18
]);
删除操作
1.删除单条数据
$user = User::destroy(24);
2.删除多条数据
$user = User::destroy("33, 34, 35");
3.删除特定数据
$user = User::destroy(["name"=>"wjc5"]);
4.多条件删除
$user = User::destroy(["name"=>"wjc6", "pass"=>123]);
5.删除区间范围内数据
$user = User::where("id", ">", "43")->where("id", "<", "47")->delete();
修改操作
1.通过save方法修改
$user = new User;
$res = $user->save(
[
"pass"=>"adsahiu",
"age"=>18
],[
"id"=>43
]
);
注:第一个参数是修改的值,第二个参数是修改数据的条件!
2.通过saveAll()方法批量更新数据
$data = [
["id"=>43, "name"=>"abc", "pass"=>123],
["id"=>47, "name"=>"abc", "pass"=>123]
];
$user = new User;
$res = $user->saveAll($data);
3.通过update方法实现更新数据
$user = new User;
$res = $user->where("id", ">", "17")->update(["age"=>18]);
$res = User::where("id", "<", "58")->update(["pass"=>123]);
聚合
1.count方法进行计数
$total = User::count();
dump($total);
2.对特定数据进行计数
$total = User::where("age", ">", 18)->count();
3.统计最大值
$max = User::max("age");
4.平均值
$avg = User::avg("age");
5.求和
$sum = User::sum("age");
获取器
1.控制器代码
$user = User::get(48);
dump($user->toArray());
2.数据模型中编写相应字段方法,对查询的数据字段进行判断修饰返回结果。
public function getSexAttr($val){
switch($val){
case '0':
return "未知";
break;
case '1':
return "男";
break;
case '2':
return "女";
break;
default:
break;
}
}
修改器
1.控制器
//必须使用save方法触发
$user = new User;
$res = $user->save(["pass"=>"456"], ["id"=>43]);
注:一定要使用save方法才能触发修改器!
2.数据模型编写相应的修改操作代码
public function setPassAttr($val){
return md5($val);
}
自动完成
注意:
** 修改器:数据赋值的时候自动进行转换处理
**自动完成:没有手动赋值的情况下进行手动处理
1.控制器代码
//实例化Use数据模型
$user = new User();
//插入数据
$res = $user->save(["name"=>"wjc", "pass"=>555]);
dump($res);
2.数据模型代码
//增加和修改操作都会执行
protected $auto=[];
//创建数据时执行
protected $insert=["create_time"];
//修改数据执行
protected $update=["update_time"];
//设置自动完成
//无论更新操作和添加操作都会执行
protected $auto=["user_status", "time"];
//书写自动完成
protected function setTimeAttr(){
return time();
}
protected function setUserStatusAttr(){
return 1;
}
软删除
作用:即实现假删除,数据仍在数据库表中,不过会打上标识表示这条数据应被删除。(可进行删除)
1.实现(即在模型中导入softdelete类然后在方法中写use SoftDelete)
namespace app\index\model;
//导入系统的数据模型
use think\Model;
//声明Uset模型
use traits\model\SoftDelete;
class User extends Model{
use SoftDelete;
//设置删除的时间戳
//当设置字段与系统所要求的字段不一致时,可以手动设置
// protected $deleteTime = "delete_times";
}
2.控制器
1)删除数据
// $res = User::destroy(59);
2).获取数据
$res = User::get(59);
//软删除数据库数据存在,但是get获取不到
dump($res);
3)直接删除
//直接删除数据
$res = User::destroy(43,true);
//使用delelte直接删除,软删除只能用destroy
$user = new User();
$res = $user->where("id", 55)->delete();
4)读取软删除数据
//读取软删除数据
//获取一条软删除数据(也可以读取不是软删除数据)
$res = User::withTrashed()->find(59);
//获取全部数据,包括软删除数据
$res = User::withTrashed()->select();
dump($res->toArray());
//只读取软删除数据
$res = User::onlyTrashed()->select();
dump($res);