博主信息
博文 42
粉丝 0
评论 1
访问量 33285
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
闭包查询及软删除功能实例-5月24日作业
日薪月e的博客
原创
838人浏览过

作业内容

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


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

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学