一、模型查询
1.单条记录查询,get(主键/闭包)
闭包:就是一个匿名回调函数,将函数做为参数进行传递
public function query() { $staff = StaffModel::get(2); //用闭包来创建一个查询条件 $staff = StaffModel::get(function($query){ $query->where('sex',0)->where('salary','>',4000); //条件 }); echo '性别为男,工资大于等于4000的员工信息'; dump($staff); }
2.直接静态调用Db类的查询构造器进行查询
public function query() { StaffModel::where('sex',0) ->where('salary','>',4000) ->find(); dump($staff); }
二、多条记录查询,all(主键列表/闭包)
public function query() { //1. 多条记录查询,返回值是多个数组/对象数组 $staffs = StaffModel::all(function($query){ $query->where('sex',0)->where('salary','>',4000); }); foreach ($staffs as $value) { echo '姓名:'.$value->name.'<br>'; echo '性别:'.$value->sex.'<br>'; echo '年龄:'.$value->age.'<br>'; echo '工资:'.$value->salary.'<hr>'; } // 2. 采用闭包来实现将请求变量注入到闭包条件中 //$this->request : 请求对象 $age = $this->request->param('age') ? : 30; $salary = $this->request->param('salary') ? : 3000; $staff = StaffModel::all(function($query) use($age, $salary) { $query->where('age','<',$age)->where('salary','>',$salary); }); dump($staff); } }
多记录查询预览图:
模型:软删除操作:必须在模型中进行配置
软删除的步骤:
1.在数据库表中添加一个字段:删除时间(删除标志):delete_time
2.在模型类中添加一个属性:$deleteTime = 'delete_time';
3.在模型中用use导入软删除的trait类库:SoftDelete
(use think\model\concern\SoftDelete; )
4.最新版支持设置软删除的默认字段值($defaultSoftDelete = 0;)
控制器下的 controller/Staff.php文件:
public function delete() { //软删除:必须在模型中进行配置 //就是在delete_time字段中增加一个标志(时间戳) public function softDelete() { // StaffModel::destroy(14); //软删除的数据在普通查询中不可见 // $res = StaffModel::where('salary_id','<',5)->select(); //被软删除的数据不会被查询到(不会显示) //如果想在查询的时候看到已经被删除的记录 // $res = StaffModel::withTrashed()->where('salary_id','<',5)->select();//查询到的数据中,被软删除的记录也会显示。 //我想查看一下回收站 $res = StaffModel::onlyTrashed()->select(); dump($res); }
模型类中的配置文件:model/staff.php
<?php
namespace app\index\model; use think\Model; //导入thinkphp文件夹下的Model文件 use think\model\concern\SoftDelete; //引入trait方法集 class Staff extends Model //创建一个staff类,并继承了Model中所有的功能 { use SoftDelete; //类中引用SoftDelete //设置数据表的名称 protected $table = 'staff'; //设置主键:默认为id protected $pk = 'staff_id'; //设置删除时间的字段名 protected $deleteTime = 'delete_time'; //必须与数据库表中的delete_time字段一致 //设置软删除字段的默认值 protected $defaultSoftDelete = 0; }