博客列表 >5.24 闭包查询&软删除

5.24 闭包查询&软删除

小丑的博客
小丑的博客原创
2018年05月29日 16:32:00908浏览

1.实例演示闭包实现查询
2.实例实现软删除功能并详细写出软删除的步骤

实例

<?php

namespace app\index\controller;

//导入staff表模型
use app\index\model\Staff as StaffModel;
use think\Db;


class Staff{

//    查询
    public function find(){

//        主键查询 get();返回一条数据
        $st = StaffModel::get(1);
        dump($st);
        echo $st['name'].'<br>';                        //数组
        echo $st->name.'--'.$st->age.'--'.$st->address; //返回staff对象,显示对象中name属性;


        //如果查询条件复杂可以使用闭包方式创建查询条件;
        $st1 = StaffModel::get(function ($query){
           $query->where('staff_id','>=','10')->where('age','>',24);
        });

        dump($st1);
        echo $st1['name']; //返回staff对象,显示对象中name属性;


        //查询构造器进行查询
        $st2 = StaffModel::where('staff_id','>=','10')->find();
        dump($st2); //返回staff对象,显示对象中name属性;



        //查询全部 //根据staff_id;
        $st3 = StaffModel::all([1,5,11]);
        dump($st3);

        $st4 = StaffModel::all(function ($query){
           $query->where('staff_id','>=','10')->where('age','>=',18)->select();
        });
        dump($st4);

        foreach ($st4 as $value) {
            echo '姓名:'.$value['name'].'  年龄:'.$value['age'].'<br>';
        }

    }

    //新增
    public function add(StaffModel $staff){
//        $staff->name='典韦';
//        $staff->age=38;
//        $staff->address='黄典坡';
//        $staff->iphone='001100';
//
//        $staff->save();

        //批量增加
        $list = [
            ['name'=>'老夫子','age'=>60,'address'=>'暂缺','iphone'=>01],
            ['name'=>'达摩','age'=>35,'address'=>'印度','iphone'=>001]
        ];

        $staff->saveAll($list);
        //和save方法不同的是,create方法返回的是当前模型的对象实例。
    }

    //和save方法不同的是,create方法返回的是当前模型的对象实例。
    public function create(StaffModel $staff){
        $stff = $staff::create(
            ['name'=>'王昭君','age'=>24]
        );
        echo $stff->name.'__'.$stff->age;
    }

    //修改
    public function update(){

        //先查询--后更新
//        $st = StaffModel::get(28);
//        $st->name='貂蝉';
//        $st->age='18';
//        $st->address='王府';
//        $st->iphone='1200';
//        $st->save();

        //对于复杂的查询条件,可以使用查询构造器查询数据并更新;
//        StaffModel::update(
//          ['name'=>'关二爷'],
//          ['staff_id'=>23]
//        );

        $st1 = StaffModel::where('staff_id','=',23)->where('name','=','关公')->find();
//        $st1->name='关公';
        $st1->name=Db::raw('name+2');
        $st1->save();




    }

    public function del(StaffModel $staff){
//        用静态方法(根据主键删除)
        $staff::destroy(27);

        $staff::destroy(function ($query){
           $query->where('staff_id','=',27);
        });

    }


    //软删除
    public function des(StaffModel $staff){
        //软删除
        $staff::destroy(31);

        //真实删除
        $staff::destroy(32,true);
    }

    
    public function sel(StaffModel $staff){
//        $st = $staff::all();
        //默认情况下查询的数据不包含软删除数据,
        //如果需要包含软删除的数据,可以使用下面的方式查询:
//        $st = $staff::withTrashed()->select();

//        仅仅需要查询软删除的数据,可以使用:
        //$st = $staff::onlyTrashed()->select();
        //恢复被软删除的数据
        $st = $staff::onlyTrashed()->find(31);
        $st->restore();

        dump($st);
    }

}

运行实例 »

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


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