abstract:<?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); } }
Correcting teacher:查无此人Correction time:2019-03-16 09:41:23
Teacher's summary:完成的不错。增删查改是对数据库的基本操作,要多练习,删除慎用。继续加油。