摘要:<?php //模型 namespace app\index\model; use think\Model; use think\model\concern\SoftDelete;//导入软删除 他是trait方法集 class Staff extends Model { &
<?php
//模型
namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;//导入软删除 他是trait方法集
class Staff extends Model
{
use SoftDelete;//相当于把trait类里面的代码复制到这里
//设置数据表名称 直接与要操作的数据表绑定
protected $table = 'user';
//设置主键:默认是id,不是的话就要进行设置
protected $pk = 'id';
//设置删除时间的字段名
protected $deleteTime = 'delete_time';//这个会在数据表中创建一个字段来保存删除的时间戳
//设置软删除字段的默认值
protected $defaultSoftDelete = 0;
}
//操作
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;
use think\Db;
use think\model\concern\SoftDelete;//设置模型类别名
class Staff extends Controller
{
//实例化模型 new StaffModel()
public function instance(StaffModel $staff)//这里用依赖注入 只要有类型约束,在外部系统就会自动实例化对象
{
dump($staff->getName());//查看模型名称
//新增一条记录
$staff->name = '刘大婶';
$staff->age =36;
$staff->phone=3243434455;
//新增操作
$staff->save();
return '新增成功,id='.$staff->id;
}
//模型查询
public function query()
{
//单条记录:get(主键/闭包)
//闭包就是匿名回调函数,将函数作为参数进行传递
//$sta = StaffModel::get(17);//查询可以返回一个对象
//dump($sta);
//echo $sta['name'],'<br/>';
//echo $sta->age,'<br/>';
//用闭包来创建查询条件
$sta = StaffModel::get(function ($query){//$query必传,这是系统自动实例化过的对象
$query->where('age','>','50')->where('sex',0);
});
dump($sta);
//也可以直接用静态调用Db类的查询构造器进行查询
//StaffModel == Db::table('user') 在模型里面绑定了数据表的,所以这两种是相等的
//第一个方法要静态调用,后面跟查询构造器一样写
//$staff = StaffModel::where('age','<','50')->find();
//dump($staff);
//多条记录查询:all(主键列表\闭包)
//返回值是多个数组/对象数组
//$staff = StaffModel::all();
//dump($staff);
//用闭包来查询
/*$staff = StaffModel::all(function ($query){
$query->where('age','>','60');
});*/
/*dump($staff);*/
echo '<hr>';
//采用闭包来实现将请求变量注入到闭包条件中 来自url地址中的参数
//$this->request ===new \think\facade\Request 请求对象来自controller控制器中,可以获取请求的变量
$age = $this->request->param('age') ? : 40;
$staff = StaffModel::all(function ($query) use ($age) {//闭包中引入变量
$query->where('age','>',$age);
});
dump($staff);
}
//更新操作
public function update()
{
//先查询在赋值最后保存
/* $staff = StaffModel::get(11);
$staff->phone = 11111111;//更新记录字段
$staff->save();//将更新写回表中*/
//静态方法更新
StaffModel::update(
['phone'=>22222222],//要更新的字段
['id'=>11]//条件
);
//复杂更新,当条件比较多时,就要用闭包了
/* StaffModel::update(
['age'=>\think\Db::raw('age+10')],
function ($querty){
$querty->where('age','>','60');
}
);*/
//查询构造器来更新数据
StaffModel::where('age','>','60')
->data(['age'=>\think\Db::raw('age-10')])
->update();
}
//新增数据
public function create()
{
//1.save() 2.create(数据,字段)
$data = ['name'=>'流星','age'=>90,'phone'=>9999999];
//$field = ['name','age'];//允许插入的字段
//StaffModel::create($data,$field);
//用查询构造器来插入数据
StaffModel::insert($data);
}
//模型的删除
public function delete()
{
//destroy(主键/主键列表/闭包)
// StaffModel::destroy([21,22,23]);
//删除条件推荐使用闭包
/*StaffModel::destroy(function ($query){
$query->where('id','>',10);
});*/
//查询构造器实现删除
StaffModel::where('id',17)
->delete();
//工作上一般用软删除
}
//软删除 必须要在模型里面进行配置
public function softDelete()
{
//StaffModel::destroy(19);
//软删除的数据在普通查询中不可见
//如果想在查询的时候看到已经被删除的记录
$res = StaffModel::withTrashed()
->where('id','>',11)
->select();
dump($res);
//只看被软删除的数据
$res = StaffModel::onlyTrashed()->select();
dump($res);
}
}
批改老师:查无此人批改时间:2019-03-16 09:41:23
老师总结:完成的不错。增删查改是对数据库的基本操作,要多练习,删除慎用。继续加油。