博主信息
博文 59
粉丝 0
评论 1
访问量 57998
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
用模型实现闭包查询与软删除功能的步骤——2018年5月24日作业
白猫警长的博客
原创
1095人浏览过


一、模型查询

1.单条记录查询,get(主键/闭包)

闭包:就是一个匿名回调函数,将函数做为参数进行传递


public function query()
{
  $staff = StaffModel::get(2);
  
  //用闭包来创建一个查询条件
    $staff = StaffModel::get(function($query){
	 $query->where('sex',0)->where('salary','>',4000);	//条件
    });
	echo '性别为男,工资大于等于4000的员工信息';
	dump($staff);
}


2.直接静态调用Db类的查询构造器进行查询


public function query()
{
   StaffModel::where('sex',0)
	    ->where('salary','>',4000)
	    ->find();
    dump($staff);
}



二、多条记录查询,all(主键列表/闭包)

public function query()
{
    //1. 多条记录查询,返回值是多个数组/对象数组
    $staffs = StaffModel::all(function($query){
        $query->where('sex',0)->where('salary','>',4000);
    });
	foreach ($staffs as $value) {
	echo '姓名:'.$value->name.'<br>';
	echo '性别:'.$value->sex.'<br>';
	echo '年龄:'.$value->age.'<br>';
	echo '工资:'.$value->salary.'<hr>';
        }

// 2. 采用闭包来实现将请求变量注入到闭包条件中
//$this->request : 请求对象

    $age = $this->request->param('age') ? : 30;
    $salary = $this->request->param('salary') ? : 3000;

    $staff = StaffModel::all(function($query) use($age, $salary) {
	$query->where('age','<',$age)->where('salary','>',$salary);
    });
    dump($staff);
   }
  }
多记录查询预览图:

1.png

模型:软删除操作:必须在模型中进行配置

软删除的步骤:

1.在数据库表中添加一个字段:删除时间(删除标志):delete_time

2.在模型类中添加一个属性:$deleteTime = 'delete_time';

3.在模型中用use导入软删除的trait类库:SoftDelete

(use think\model\concern\SoftDelete; )

4.最新版支持设置软删除的默认字段值($defaultSoftDelete = 0;)


控制器下的 controller/Staff.php文件:

public function delete()
{	
    //软删除:必须在模型中进行配置
    //就是在delete_time字段中增加一个标志(时间戳)
    public function softDelete()
    {
        // StaffModel::destroy(14);
        
        //软删除的数据在普通查询中不可见
        // $res = StaffModel::where('salary_id','<',5)->select();	//被软删除的数据不会被查询到(不会显示)
        
        //如果想在查询的时候看到已经被删除的记录
        // $res = StaffModel::withTrashed()->where('salary_id','<',5)->select();//查询到的数据中,被软删除的记录也会显示。
        
        //我想查看一下回收站
        $res = StaffModel::onlyTrashed()->select();
        dump($res);
    }

模型类中的配置文件:model/staff.php

<?php

namespace app\index\model;

use think\Model;	//导入thinkphp文件夹下的Model文件
use think\model\concern\SoftDelete;		//引入trait方法集

class Staff extends Model 	//创建一个staff类,并继承了Model中所有的功能
{
	use SoftDelete;	//类中引用SoftDelete

    //设置数据表的名称
    protected $table = 'staff';

    //设置主键:默认为id
    protected $pk = 'staff_id';

    //设置删除时间的字段名
    protected $deleteTime = 'delete_time';	//必须与数据库表中的delete_time字段一致

    //设置软删除字段的默认值
    protected $defaultSoftDelete = 0;
}


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学