博客列表 >php0524之TP框架CURD

php0524之TP框架CURD

有点凉了
有点凉了原创
2018年05月26日 17:05:33703浏览

实例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/25 0025
 * Time: 下午 1:53
 */
namespace app\index\controller;
use think\Container;
use app\index\model\EmpModel;
use think\Request;


class Emp extends Container{

//    public function instance(EmpModel $empModel){//依赖注入 那是 方法里边的EmpModel 自动实例化了。。  instance 方法名报错
    public function getData(EmpModel $empModel){//依赖注入 那是 方法里边的EmpModel 自动实例化了。。 这个正常
//        $empModel = new EmpModel();//可以内部直接实例化
        dump($empModel->getName());
        //新增一条记录
        $empModel->name='QB';
        $empModel->grade=1;
        $empModel->email='admin@qq.com';
        $empModel->salary='1000 ';
        $empModel->save();
//        return "新增成功= ".$empModel->getLastInsID();
        return "新增成功= ".$empModel->id;
    }
    //模型查询
    public function query(){
        //1单条记录 get(主键/闭包)
        //闭包就是一个匿名回调函数

       /* $emp = EmpModel::get(38);
        dump($emp);//dump返回的是经过处理的数组

        \var_dump($emp);//默认数据源返回的是个对象

        echo $emp->name;
        echo "<hr>";*/



       /* $emp_1 = EmpModel::get(function ($query){
            $query->where('id',100);
        });
        dump($emp_1);*/



        /*$emp_2 = EmpModel::where('grade',1)
            ->where("salary",">","500")
            ->select();
        dump($emp_2,true,"find");*/


       /* $emp_3=EmpModel::all([100,250,5247,1475,2658,41447,1475]);
        dump($emp_3,true,"all");
        foreach ($emp_3 as $item) {//貌似tp内部处理了 这里用数组获取字段 和 用对象获取字段效果一样
            echo "姓名".$item['name']."<br>";
            echo "等级".$item->grade."<br>";
            echo "邮箱".$item->email."<br>";
            echo "工资".$item->salary."<hr>";
        }*/


        //采用闭包来实现将请求变量注入到闭包条件中
        //$this->request:请求对象
//        $request = new Request();
        $grade = $this->request->param('grade')?:2;
        $salary = $this->request->param('salary')?:500;

//        $emp_4 = EmpModel::all(function ($query)/* use ($grade,$salary)*/{
//            $query->where('grade','<',/*$grade*/2)->where('salary','>',/*$salary*/500);
//        });
//        dump($emp_4);



    }
    public function getAll(Request $request){
//        $grade = $this->request->param('grade')?:2;
//        $salary = $this->request->param('salary')?:500;
//        $grade = $request->param('grade') ? : 1;//门脸用不了了
//        $salary = $request->param('salary')?:500;
        $grade = $request->param('grade') ? : 1;//门脸用不了了
        $salary = $request->param('salary')?:500;
        $emp_4 = EmpModel::all(function ($query) use ($grade,$salary){
            $query->where('grade','>',$grade)->where('salary','>',$salary);
        });
        dump($emp_4);
    }

    public function update(Request $request){//更新数据
        $id = $request->param('id');
        $name = $request->param('name');
        $salary = $request->param('salary');
        //方法 一:
//        $empUpdate = EmpModel::where('id',$id)
//            ->find();
//        dump($empUpdate);
//        $empUpdate->name=$name;
//        $empUpdate->save();//这种方式不太推荐使用 可以直接使用 update静态方法
//        dump($empUpdate);
        //方法 二:直接调用update方法
//        $data=[
//            'name'=>$name
//        ];
//        $where=[
//            'id'=>$id
//        ];
//        $emp_update_result = EmpModel::update($data,$where);
//        dump($emp_update_result);
        //方法三;使用闭包更新
        $data = [
            'salary'=> \think\Db::raw('salary+500')
        ];
        $emp_add_salary = EmpModel::update($data,function ($query) use ($salary){
            $query->where('salary','>',$salary);
        });
        dump($emp_add_salary);
    }

    public function AddData(Request $request){//新增数据,可以用静态方法create 或者 用 save方法 上边有演示
        $name = $request->param('name');
        $grade = $request->param('grade');
        $email = $request->param('email');
        $salary = $request->param('salary');

        $data = [
            'name'=>$name,
            'grade'=>$grade,
            'email'=>$email,
            'salary'=>$salary
        ];
        $field=[//默认允许新增的字段
            'name',
            'grade',
//            'email',
            'salary'
        ];
        $emp_add_result = EmpModel::create($data,$field);
        dump($emp_add_result);
    }
    public function deleteData(Request $request){
//        start
//        EmpModel::destroy(74812);//根据主键删除数据  内部主键可以是个数组
        /**
         * 执行顺序
         * [ DB ] CONNECT:[ UseTime:0.003000s ] mysql:host=127.0.0.1;dbname=work;charset=utf8
         * [ SQL ] SHOW COLUMNS FROM `emp` [ RunTime:0.027002s ]
         * [ SQL ] SELECT * FROM `emp` WHERE `id` = 74812 [ RunTime:0.000000s ]
         * [ SQL ] DELETE FROM `emp` WHERE `id` = 74812 [ RunTime:0.001000s ]
         */
//        end



//        start
        $id = $request->param('id');
        //删除推荐使用闭包删除
        EmpModel::destroy(function ($query) use ($id){//这里跟更新一样可以接受参数
            $query->where('id',$id);
        });
        /**
         * [ DB ] CONNECT:[ UseTime:0.001000s ] mysql:host=127.0.0.1;dbname=work;charset=utf8
         * [ SQL ] SHOW COLUMNS FROM `emp` [ RunTime:0.029002s ]
         * [ SQL ] SELECT * FROM `emp` WHERE `id` = 74813 [ RunTime:0.000000s ]
         * [ SQL ] DELETE FROM `emp` WHERE `id` = 74813 [ RunTime:0.000000s ]
         */
//        end


//        start
//        EmpModel::where('id',$id)->delete();//使用查询构造器删除数据
        /**
         * [ DB ] CONNECT:[ UseTime:0.010001s ] mysql:host=127.0.0.1;dbname=work;charset=utf8
         * [ SQL ] SHOW COLUMNS FROM `emp` [ RunTime:0.032001s ]
         * [ SQL ] DELETE FROM `emp` WHERE `id` = 74810 [ RunTime:0.000000s ]
         */
//        end
    }

    public function softDelete(Request $request){
        $id = $request->param('id');
        EmpModel::destroy($id);
        /**
         * [ DB ] CONNECT:[ UseTime:0.003000s ] mysql:host=127.0.0.1;dbname=work;charset=utf8
         * [ SQL ] SHOW COLUMNS FROM `emp` [ RunTime:0.031002s ]
         * [ SQL ] SELECT * FROM `emp` WHERE `id` = 74819 [ RunTime:0.001000s ]
         * [ SQL ] UPDATE `emp` SET `delete_time` = 1527324100 WHERE `id` = 74819 [ RunTime:0.000000s ]
         */
    }

    public function getBigId(){
        $res = EmpModel::where('id','>','74794')->select();
        dump($res);
        $resSoftDelete =EmpModel::withTrashed()->where('id','>','74794')->select();
        dump($resSoftDelete);
    }

    public function restoreData(){
        $where = [
            'id'=>74819
        ];
//        $emp = EmpModel::onlyTrashed()->find();
//        $emp->restore();
        $emp = new EmpModel();
        $emp->restore($where);
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


实例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/25 0025
 * Time: 下午 12:03
 */
namespace app\index\model;

use think\Model;
use think\model\concern\SoftDelete;

class EmpModel extends Model{
    use SoftDelete;//(⊙o⊙)…这个东西实在模型中引入的。
    //设置数据表名
    protected $table = 'emp';
    //设置主键 主键默认是id 如果 数据表中不是的话 需要特殊指定
    protected $pk = 'id';
    //设置删除时间字段名
    protected $deleteTime = 'delete_time';
    protected $defaultSoftDelete=0;

}

运行实例 »

点击 "运行实例" 按钮查看在线实例


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