Blogger Information
Blog 42
fans 0
comment 1
visits 26051
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
闭包查询及软删除功能实例-5月24日作业
日薪月e的博客
Original
649 people have browsed it

作业内容

实例演示闭包实现查询
闭包:就是一个匿名回调函数,将函数作为参数进行传递。实例代码如下:


	public function query()
	{
		//1.单条记录:get(主键/闭包)、
		//闭包:就是一个匿名回调函数,将函数作为参数进行传递
		
		$staff = StaffModel::get(2);

		dump($staff); //dump是框架提供的函数,对输出结果进行了预处理,是数组。
		echo '<hr>';

		\var_dump($staff); //全局的var_dump函数,输出结果是对象。
		echo '<hr>';
		echo $staff['name'],'<br>'; //用数组方式查看
		echo $staff->name,'<br>'; //用对象方式查看

		//用闭包来创建查询条件
		//查询性别是男,工资大于8000的用户
		$staff = StaffModel::get(function($query){
			$query->where('sex',0)->where('salary','>',8000);
		});

		echo '性别为男,工资大于8000的员工信息<br>';
		dump($staff);

		echo '<hr>';

		//2.多条记录查询 all(主键列表/闭包)
		//返回值是多个数组/对象数组
		
		//采用闭包来实现将请求变量注入到闭包条件中
		// $this->request  请求对象
		// 通过外部获取请求变量
		$age = $this->request->param('age') ?: 40;
		$salary = $this->request->param('salary') ?: 4000;

		//闭包
		$staffs = StaffModel::all(function($query) use ($age,$salary){
			$query->where('age','<',$age)->where('salary','>',$salary);
		});

		dump($staffs);
	}

运行实例 »

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

实例实现软删除功能并详细写出软删除的步骤

软删除步骤:

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

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

3).在模型中导入一个软删除的trait类库:SoftDelete

4).最新版本还支持设置软删除的默认字段值,不设置默认为null

实例代码如下:

模型配置

<?php
namespace app\index\model;

use think\model\concern\SoftDelete; //导入软删除的trait类库
use think\Model;

class Staff extends Model
{
	use SoftDelete;
	//设置数据表的名称
	protected $table = 'staff';

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

	//设置删除时间的字段名:
	protected $deleteTime = 'delete_time';

	//设置软删除字段的默认值:
	protected $defaultSoftDelete = 0;
	
}
软删除方法如下:

public function softDelete()
	{
		StaffModel::destroy(1);
		// UPDATE `staff` SET `delete_time` = 1527571925 WHERE `staff_id` = 1 
		
		//软删除的数据在普通查询中不可见
		// $res = StaffModel::where('staff_id','<',5)->select();
		// dump($res);

		//如果想在查询的时候看到已经被软删除的记录
		// $res = StaffModel::withTrashed()->where('staff_id','<',5)->select();
		// dump($res);
		//SELECT * FROM `staff` WHERE ( `staff_id` < 5 ) AND `staff`.`delete_time` = '0' 
		//
		//只查询回收站:
		// $res = StaffModel::onlyTrashed()->select();
		// dump($res);
		//SELECT * FROM `staff` WHERE `staff`.`delete_time` <> '0'
		//
		//恢复回收站数据
		$res = StaffModel::onlyTrashed()->find(1);
		$res->restore();
		//UPDATE `staff` SET `delete_time` = 0 WHERE ( `staff_id` = 1 ) AND `delete_time` <> 0 
		$staff = StaffModel::get(1);
		dump($staff);
	}

Correction status:qualified

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