Correction status:qualified
Teacher's comments:
作业内容
实例演示闭包实现查询
闭包:就是一个匿名回调函数,将函数作为参数进行传递。实例代码如下:
public function query() { //1.单条记录:get(主键/闭包)、 //闭包:就是一个匿名回调函数,将函数作为参数进行传递 $staff = StaffModel::get(2); dump($staff); //dump是框架提供的函数,对输出结果进行了预处理,是数组。 echo '<hr>'; \var_dump($staff); //全局的var_dump函数,输出结果是对象。 echo '<hr>'; echo $staff['name'],'<br>'; //用数组方式查看 echo $staff->name,'<br>'; //用对象方式查看 //用闭包来创建查询条件 //查询性别是男,工资大于8000的用户 $staff = StaffModel::get(function($query){ $query->where('sex',0)->where('salary','>',8000); }); echo '性别为男,工资大于8000的员工信息<br>'; dump($staff); echo '<hr>'; //2.多条记录查询 all(主键列表/闭包) //返回值是多个数组/对象数组 //采用闭包来实现将请求变量注入到闭包条件中 // $this->request 请求对象 // 通过外部获取请求变量 $age = $this->request->param('age') ?: 40; $salary = $this->request->param('salary') ?: 4000; //闭包 $staffs = StaffModel::all(function($query) use ($age,$salary){ $query->where('age','<',$age)->where('salary','>',$salary); }); dump($staffs); }
点击 "运行实例" 按钮查看在线实例
实例实现软删除功能并详细写出软删除的步骤
软删除步骤:
1).在表中添加一个字段:删除时间(删除标志):delete_time
2).在模型中添加一个属性:$deleteTime = 'delete_time'
3).在模型中导入一个软删除的trait类库:SoftDelete
4).最新版本还支持设置软删除的默认字段值,不设置默认为null
实例代码如下:
模型配置
<?php namespace app\index\model; use think\model\concern\SoftDelete; //导入软删除的trait类库 use think\Model; class Staff extends Model { use SoftDelete; //设置数据表的名称 protected $table = 'staff'; //设置主键:默认id protected $pk = 'staff_id'; //设置删除时间的字段名: protected $deleteTime = 'delete_time'; //设置软删除字段的默认值: protected $defaultSoftDelete = 0; }
public function softDelete() { StaffModel::destroy(1); // UPDATE `staff` SET `delete_time` = 1527571925 WHERE `staff_id` = 1 //软删除的数据在普通查询中不可见 // $res = StaffModel::where('staff_id','<',5)->select(); // dump($res); //如果想在查询的时候看到已经被软删除的记录 // $res = StaffModel::withTrashed()->where('staff_id','<',5)->select(); // dump($res); //SELECT * FROM `staff` WHERE ( `staff_id` < 5 ) AND `staff`.`delete_time` = '0' // //只查询回收站: // $res = StaffModel::onlyTrashed()->select(); // dump($res); //SELECT * FROM `staff` WHERE `staff`.`delete_time` <> '0' // //恢复回收站数据 $res = StaffModel::onlyTrashed()->find(1); $res->restore(); //UPDATE `staff` SET `delete_time` = 0 WHERE ( `staff_id` = 1 ) AND `delete_time` <> 0 $staff = StaffModel::get(1); dump($staff); }