Blogger Information
Blog 59
fans 0
comment 1
visits 48471
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用模型实现闭包查询与软删除功能的步骤——2018年5月24日作业
白猫警长的博客
Original
872 people have browsed it


一、模型查询

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;
}


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post