博主信息
博文 31
粉丝 0
评论 2
访问量 34276
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
5月24日作业——实例演示闭包实现查询和软删除
钱光照的博客
原创
1006人浏览过

实例演示闭包实现查询和软删除:

一、模型类源码Students.php----model

实例

<?php

namespace app\index\model;

use think\Model;
use think\model\concern\SoftDelete;//软删除trait方法集
class Students extends Model
{
    use SoftDelete;
    //设置数据表的名称
    protected $table = 'students';
    //设置主键,默认就是ID
    protected $pk = 'id';
    
    //设置删除时间的字段名
    protected $deleteTime = 'delete_time';
   
    //设置软删除字段的默认值
    protected $defaultSoftDelete = 0;
}

运行实例 »

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

二、实例演示闭包实现查询

Students.php----controller源码如下:

实例

<?php
namespace app\index\controller;

use think\Controller;
use app\index\model\Students as StudentsModel;//设置模型类的别名

class Students extends Controller
{
	//模型查询
	public function query()
	{
		//单条记录查询
		$students = StudentsModel::get(function($query){
		//get返回满足条件的第一条记录
			$query->where('sex',0)
			      ->where('grade','>',70);
		});
		echo '性别为男,成绩大于70的人员信息:<br>';
		dump($students);
		echo '<hr>';

		//多条记录查询
		$students = StudentsModel::all(function($query){
			$query->where('age','<',40)->where('grade','>',70);
		});
		// dump($students);
		foreach ($students as $students) {
			echo '姓名:'.$students->name.'<br>';
			echo '性别:'.$students->sex.'<br>';
			echo '年龄:'.$students->age.'<br>';
			echo '成绩:'.$students->grade.'<hr>';
		}

		//采用闭包来实现将请求变量注入到闭包条件中
		//$this->request 相当于 new \think\facade\Request
		//
		$age = $this->request->param('age') ?:70;
		$grade = $this->request->param('grade') ?:100;
		$students = StudentsModel::all(function($query) use ($age,$grade){
			$query->where('age','<',$age)->where('grade','>',$grade);
		});
		dump($students);
	}
 }
 
运行实例 »

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

运行结果图:

2.png

1.png

三、实例实现软删除功能及软删除的步骤

  1. 软删除的步骤:

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

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

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

  • 提醒:最新版支持软删除的默认字段值;软删除的记录在普通查询中不可见

   2.实例实现软删除功能

实例

<?php
namespace app\index\controller;

use think\Controller;
use app\index\model\Students as StudentsModel;//设置模型类的别名

/医院
* 
*/
class Students extends Controller
{
    public function softDelete()
	{
	     StudentsModel::destroy(2);//用更新模拟删除,相当于下面两句
	     // SELECT * FROM `students` WHERE `id` = 2 
             // UPDATE `students` SET `delete_time` = 1527267743 WHERE `id` = 2
             // $res = StudentsModel::where('id','<',4)->select();
             // dump($res);

             //如果想在查询的时候看到已经被删除的记录
             // $res = StudentsModel::withTrashed()->where('id','<',4)->select();
             // dump($res);

             //如果想只看被删除的数据
             $res = StudentsModel::onlyTrashed()->select();
             dump($res);
	}
}

运行实例 »

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


批改状态:未批改

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