<?php
// model 模型类 index/modle/Staff.php Staff->对应数据表
namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;
class Staff extends Model
{
use SoftDelete; //导入软删除类库
//设置数据表名
protected $table = 'staff';
// 设置主键
protected $pk = 'staff_id';
// 软删除
// 1:在表中添加删除时间字段 delete_time
// 2:在模型类中添加属性 $delete_time = 'delete_time';
// 3:在模型类中导入软删除类库trait :SoftDelete
// 4:最新版本支持设置软删除默认字段
protected $delete_time = 'delete_time';
protected $defaultSoftDelete = 0;
}
<?php
// 控制器类 controller/Staff.php 与模型名相同
/**
* @Author: owlcity
* @Date: 2018-05-25 14:27:37
* @Last Modified by: owlcity
* @Last Modified time: 2018-05-25 18:53:13
*/
namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;
class Staff extends Controller {
// 模型添加
public function instance(StaffModel $staff){
// $staff = new StaffModel(); //不推荐要用依赖注入的方式
dump($staff->getName());
// 新增记录
$staff->name = '2哈哈';
$staff->sex = '0';
$staff->age = '13';
$staff->salary = '1111';
$staff->save();
// 在模型中设置表,表名主键,不然会报错
return "添加记录成功 id为".$staff->staff_id;
}
// 模型查询
public function query(){
$res = StaffModel::get(2);
dump($res);
// 用闭包创建查询
$staff = StaffModel::get(function($query){
$query->where('sex = 0')->where('salary >= 8000');
});
echo "工资大于8000的男员工:";
dump($staff);
// 静态调用Db 类进行查询
// StaffModel == Db::table('staff');
echo "<hr>";
$aa = StaffModel::where('sex = 0')
->where('salary >= 8000')
->find();
dump($aa);
// 多条记录查询 all
// 返回对象数组/多个数组
echo "====<br>";
$all = StaffModel::all([1,2]);
// 闭包方式
$all2 = StaffModel::all(function($query){
$query->where('age > 40')->where('salary >= 6000');
});
// dump($all2);
foreach($all2 as $value){
echo "姓名:".$value->name.'<br>';
echo "年龄:".$value->age.'<br>';
echo "工资:".$value->salary.'<br>';
}
// dump($all);
// 请求变量注入变量中
// $this->request == new \think\facad\Request;
echo "请求变量注入变量查询<br>";
$age = $this->request->param('age') ?: 40;
$salary = $this->request->param('salary') ?: 4000;
$all3 = StaffModel::all(function($query) use ($age,$salary){
$query->where('age','>',$age)->where('salary','>',$salary);
});
dump($all3);
}
// 模型更新
public function update(){
// 基于查询不允许无条件
// $staff = StaffModel::get(2);
// $staff->name = "小龙";
// $staff->save();
// 静态方法update('数据','条件','字段')
// 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();
return "更新成功";
}
// 创建模型添加数据
public function create(){
// create(数据,字段,false) 参数三是否允许替换默认false
$data = [
'name'=>"owl3",
'sex'=>0,
'age'=>20,
'salary'=>8888
];
// $field = ['name','sex','age','salary'];
// StaffModel::create($data,$field);
// 静态方法调用
// StaffModel::create($data);
// StaffModel::insert($data);
return "数据添加成功";
}
// 删除数据
public function delete(){
// destroy(主键) 同get
// StaffModel::destroy();
// StaffModel::destroy(function($query){
// $query->where('age','>=','55');
// });
// $data = [
// 'name'=>'刘备',
// 'sex'=>0,
// 'age'=>55,
// 'salary'=>4000
// ];
// StaffModel::insert($data);
// StaffModel::where('age','>','55')->delete();
return "删除成功";
}
public function softdelete(){
// UPDATE `staff` SET `delete_time` = 1527242353 WHERE `staff_id` = 1
// StaffModel::destroy([1,3]);
// $staff = StaffModel::all(function($query){
// $query->where('staff_id < 5');
// });
// $staff = StaffModel::withTrashed()->where('staff_id < 5')->select();
// 查看回收站
// $staff = StaffModel::onlyTrashed()->select();
// 恢复被软删除的数据
$staff = StaffModel::onlyTrashed()->find();
$staff->restore();
// dump($staff);
return "删除成功";
// 软删除的数据,在普通查询中不可见
}
}