博客列表 >5月24作业(TP模型实现数据库操作及软删除)

5月24作业(TP模型实现数据库操作及软删除)

张凯的博客
张凯的博客原创
2018年05月25日 18:59:59695浏览
<?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 "删除成功";
        // 软删除的数据,在普通查询中不可见
    }
}


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议