abstract:<?php namespace app\index\controller; use think\Db; use think\Controller; use app\index\model\Staff as StaffModel;//设置别名,防止与当前控制器冲突 class Staff extends
<?php namespace app\index\controller; use think\Db; use think\Controller; use app\index\model\Staff as StaffModel;//设置别名,防止与当前控制器冲突 class Staff extends Controller{ public function instance(StaffModel $staff){//依赖注入 //新增一条记录 $staff->name='minle'; $staff->sex='1'; $staff->age='36'; $staff->salary='6500'; $staff->save(); return '新增成功,id='.$staff->staff_id; //实际工作中,我们几乎全部采用模型的静态方法调用来实现数据操作 } //模型查询 public function query(){ //1.单条记录:静态get(主键/闭包)方法 //闭包就是一个匿名回调函数 //此时完成了二个操作:1创建模型对象2.模型对象初始化 //$staff=StaffModel::get(2); //dump($staff); //如果查询条件复杂可以使用闭包方式创建查询条件 //$staff=StaffModel::get(function($query){ //$query->where('sex',0)->where('salary','>',8000); //}); //echo '性别为男,工资大于8000的员工信息:<br>'; //dump($staff); //echo '<hr>'; //也可以直接调用Db类的查询构造器来进行查询 //模型可以静态调用所有的查询构造器的方法 $staff=StaffModel::field('name,salary')->where('age','>',40)->find(); dump($staff); echo '<hr>'; $staffs=StaffModel::all(function($query){ $query->where('age','<=',40)->where('salary','>',3000); }); foreach($staffs as $staff){ echo '姓名'.$staff->name.'<br>'; echo '年龄'.$staff->age.'<br>'; echo '工资'.$staff->salary.'<hr>'; } echo '<hr color="red">'; //采用闭包的好处非常多,特别是支持查询变量从外部传入 //举例,查询条件由用户通过URL请求提供 //控制器提供一个属性$request,其值就是请求对象,可用来快速请求变量 //如果当前请求变量中存在age和salary由获取到,否则使用默认值40,3000 $age=$this->request->param('age')? :40; $salary=$this->request->param('salary')?:3000; $staffs=StaffModel::all(function($query) use ($age,$salary){ $query->where('age','<=',$age)->where('salary','>',$salary); }); dump($staffs); } //模型更新 public function update(){ //更新必须是基于查询的,不允许无条件更新 //最简单直观的方式是先查询,在模型调用save(); //$staff=StaffModel::get(2); //$staff->name='龙姑娘'; //$staff->save();//将更新数据写到表中,返回受影响的数量 //改写上面的案例,将龙姑娘改成小龙女 //StaffModel::update( // ['name'=>'小龙女'], // ['staff_id'=>2] //); //下面我们进行一个更加复杂的更新操作 //将年龄大于50的员工的工资加500 StaffModel::update( ['salary'=>\think\Db::raw('salary+500')], function($query){ $query->where('age','>',50); } ); //也可以使用查询构造器来更新数据 //$StaffModel::where('age','>',50) //->data(['salary'=>\think\Db::raw('salary+500')]) //->update(); } //模型创建:添加数据 public function create(){ $data=[ 'name'=>'孙悟空', 'sex'=>0, 'age'=>100, 'salary'=>8888 ]; $field=['name','age','sex','salary']; StaffModel::create($data,$field); } public function delete(){ StaffModel::destroy(49); } public function softDelete(){ StaffModel::destroy(1); //UPDATE `staff` SET `delete_time` = 1542436503 WHERE ( `staff_id` = 1 ) AND `staff`.`delete_time` = '0' // } }
一、创建模型
1. 编程方式: application/index/model/Staff.php
2. 命令方式:
(1)切换think命令所在目录下;
(1)运行: php think make:model index/Staff,自动创建index/model/Staff.php,如果没有
model目录,则自动创建;
(2)运行: php think make:model Staff,如果省略模块名,默认为common模块,
模型位于:application/common/model/Staff.php,common模块如果不存在也会自动创建;
3. 默认情况下:Staff模型与数据表staff对应
--------------------------------------------------------------------------------
二、调用模型
use app\index\model\Staff;
1. 实例化调用: $staff = new Staff();
2. 静态查询调用: $staff = Staff::get();
3. 助手函数调用: $staff = model('Staff');
不推荐用助手函数,因为model()无法调用模型静态方法
Correcting teacher:天蓬老师Correction time:2018-11-18 09:39:57
Teacher's summary:作业完成的不错,合格。总结也很到位,继续努力