Correction status:qualified
Teacher's comments:
<?php namespace app\index\Controller; use think\Controller; use app\index\model\Staff as StaffModel; class staff extends Controller { //新增 public function instance(staffModel $staff) { $staff->name ='詹姆斯'; $staff->sex =0; $staff->age =35; $staff->salary =12538; $staff->save(); return '新增成功,id='.$staff->staff_id; } public function query() { // 单条记录查询 $staff =StaffModel::get(15); dump($staff); echo '<hr>'; //用闭包方式查询条件复杂的记录 $staff =StaffModel::get(function($query){ $query->where('sex','=',1)->where('salary','<',10000); }); dump($staff); echo '<hr>'; //多条记录查询 $staffs= StaffModel::all(); dump($staffs); echo '<hr>'; //返回主键为6 11 ,14的数据 $staffs =StaffModel::all([6,11,14]); dump($staffs); echo '<hr>'; //all()也支持闭包查询 $staffs=StaffModel::all(function ($query){ $query->where('age','>',50)->where('salary','>',5000); }); dump($staffs); echo'<hr>'; //all()返回的数组 同时也可以用foreach来进行遍历 foreach ($staffs as $key ) { echo'姓名:'.$key->name.'<br>'; echo'性别:'.$key->sex.'<br>'; echo'工资:'.$key->salary.'元'.'<hr style="color:red">'; } echo "<hr>"; //使用闭包查询 同时支持查询变量从外部传入 //例如 查询条件由用户通过URL提供 $sex =$this->request->param('sex')?:0; $salary =$this->request->param('salary')?:2938; $staffs =StaffModel::all(function($query) use ($sex,$salary){ $query->where('sex','=',$sex)->where('salary','>=',$salary); }); foreach ($staffs as $key ) { echo'姓名:'.$key->name.'<br>'; echo'性别:'.$key->sex.'<br>'; echo'工资:'.$key->salary.'元'.'<hr style="color:red">'; } } //模型更新 public function update() { //更新基于查询 $staff=StaffModel::get(14); $staff->name='kim'; $staff->save(); //使用静态方法来更新数据 StaffModel::update( ['name'=>'杰克'], ['staff_id'=>'14'] ); StaffModel::update( ['salary'=>\think\Db::raw('salary+1000')], function($query){ $query->where('age','<',30);} ); //也可以用查询构造器来更新数据 StaffModel::where('age','>',50) ->data(['salary'=> \think\Db::raw('salary+500')]) ->update(); } //模型 添加数据 public function create() { $data =[ 'name'=>'约翰逊', 'sex'=>1, 'age'=>24, 'salary'=>6871 ]; $field=['name','sex','age','salary']; // StaffModel::create($data,$field); // //使用查询构造器添加 } //删除操作 public function delete() { StaffModel::destroy(14); StaffModel::destroy([14,15,18]);//支持多键 //闭包查询 删除 StaffModel::destroy(function ($query){ $query->where('age','=',58)->where('salary','>',15000); }) ; //用查询构造器 删除 StaffModel::where('age','<',10) ->delete(); } public function softDelete() { StaffModel::destroy(14); //被删除的记录 无法通过普通方法查到 $staff=StaffModel::where('staff_id','=',14)->select(); //查询被软删除的数据 $staff=StaffModel::withTrashed()->where('staff_id','=',14)->select(); //从回收站查询并恢复软删除数据 $staff =StaffModel::onlyTrashed()->where('staff_id','=',14)->find(); $staff->restore(); $staff=StaffModel::where('staff_id','=',14)->select(); dump($staff); } } ?>
点击 "运行实例" 按钮查看在线实例
软删除的步骤
在模型中导入model/concern/SoftDelete 以导入其中的trait方法集
在数据表中新增delete_time字段(可自行定义,与之相匹配即可)
在相应模型中设置模型属性 protected $deleteTime = '删除时间字段名';
在类中调用softDelete;
在控制器中创建同名方法 即可使用。