摘要:controller<?php namespace app\index\controller; use think\Controller; use app\index\model\Staff as StaffModel;//设置模型类别名 class Staff extends Controlle
controller
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;//设置模型类别名
class Staff extends Controller
{
//实例化模型
// public function instance()
public function instance(StaffModel $staff)//依赖注入
{
// $staff = new StaffModel();//模型实例化
dump($staff->getName());//查看模型名称
//新增一条记录
$staff->name = 'Eddie';
$staff->sex = 0;
$staff->age = 32;
$staff->salary = 3500;
//新增操作
$staff->save();
return '新增成功,id='.$staff->staff_id;
}
//模型查询
public function query()
{
// find(),select()
//单条记录:get(主键/闭包)
//闭包就是一个匿名回调函数,将函数作为参数进行传递
// new StaffModel();
$staff = StaffModel::get(2);
dump($staff);//Array
echo '<hr>';
\var_dump($staff);//Object
echo '<hr>';
echo $staff['name'],'<br>';
echo $staff->name,'<hr>';
//用闭包创建查询条件
// $staff = StaffModel::get(function($query){
// $query->where('sex',0)->where('salary','>',8000);
// });
// echo '性别为男,工资大于8000的员工信息<br>';
// dump($staff);
echo '<hr>';
//直接静态调用Db类的查询构造器进行查询
// StaffModel ==Db::table('staff')
$staff = StaffModel::where('sex',0)
->where('salary','>',6000)
->find();
dump($staff);
echo '<hr>';
echo '<hr>';
echo '<hr>';
//2 多条记录查询:all(主键列表/闭包)
//返回值是多个数组/对象数组
// $staffs = StaffModel::all();
// $staffs = StaffModel::all([1,2,3]);
// $staffs = StaffModel::all(function($query){
// $query->where('age','<=',40)->where('salary','>',5000);
// });
// dump($staffs);
// foreach ($staffs as $staff ) {
// # code...
// echo '姓名:'.$staff->name.'<br>';
// echo '性别:'.$staff->sex.'<br>';
// echo '年龄:'.$staff->age.'<br>';
// echo '工资:'.$staff->salary.'<hr color="red">';
// }
//采用闭包实现将请求变量注入到闭包条件中
// $this->request:请求对象
$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()
{
//基于查询,不允许无条件更新
// $staff = StaffModel::get(2);
// $staff->name = '姑姑';//更新
// $staff->save();//回写
// 静态方法:update(数据,条件,字段)
StaffModel::update(
['name'=>'小龙女'],
['staff_id'=>2]
);
//复杂更新
//年龄大于40,加工资100
StaffModel::update(
['salary'=>\think\Db::raw('salary+100')],
function($query){
$query->where('age','>=',40);
}
);
// 查询构造器更新数据
StaffModel::where('age','<',25)
->data(['salary'=>\think\Db::raw('salary-100')])
->update();
}
// 创建模型:添加数据
public function create()
{
// creat(数据,字段)
$data = [
'name'=>'孙悟空2',
'sex'=>0,
'age'=>99,
'salary'=>8888
];
$data2 = [
'name'=>'猪悟能',
'sex'=>0,
'age'=>23,
'salary'=>5600
];
// $field = ['name','sex','age','salary'];
$field = ['name','age'];
// StaffModel::create($data,$field);
//
// 用查询构造器插入数据
StaffModel::insert($data2);
}
//软删除操作,先在模型中进行配置
public function softdelete()
{
StaffModel::destroy([1,2]);
//UPDATE `staff` SET `delete_time` = 1545489290 WHERE ( `staff_id` = 1 ) AND `staff`.`delete_time` = '0'
//
//软删除的数据在普通查询中不可见
$res = StaffModel::where('staff_id < 5')->select();
//想看到已经软删除的数据
$res = StaffModel::withTrashed()->where('staff_id < 5')->select();
//只想看回收站:
$res = StaffModel::onlyTrashed()->select();
dump($res);
}
//恢复数据
public function undelete()
{
if(StaffModel::onlyTrashed()->find())
{
StaffModel::onlyTrashed()->find()->restore();
}
}
}model
<?php
namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;//trait方法集
class Staff extends Model
{
use SoftDelete;
//设置数据表的名称
protected $table = 'staff';
//设置主键:默认为id
protected $pk = 'staff_id';
//设置软删除时间字段名
protected $deleteTime = 'delete_time';
//设置软删除字段默认值
protected $defaultSoftDelete = 0;
}
批改老师:天蓬老师批改时间:2018-12-23 10:06:57
老师总结:作业完成的不错,最好能加上运行的效果图,还有自己对模型操作的理解,比如优点和缺点