博客列表 >ThinkPHP 模型操作之查询、软删除 2018年5月24日

ThinkPHP 模型操作之查询、软删除 2018年5月24日

墨雨的博客
墨雨的博客原创
2018年05月26日 13:21:521944浏览

一、模型基本操作

1.模型是一个继承自框架的think\Model.php的类;

2.模型大多数情况下与一张数据表对应;

3.模型支持对象关系映射;

4.模型对应数据表,而模型实例(对象)对应表中的一条记录

用模型的方法实现对数据表的增删改查:get()单记录查询,all()多记录查询,create()新增,update()更新,destroy()删除

二、软删除

1,在数据表中添加delete_time int(10)字段,保存删除时间(删除标记);

2,在模型中导入软操作类,use think\model\concern\SoftDelete;

3,在模型中设置软删除字段名及默认值,$deleteTime = 'delete_time',$defaultSoftDelete = 0;

软删除的数据在普通查询中不可见

withTrashed()方法可以使软删除的数据包含在查询结果中

onlyTrsashed()方法则只查询软删除的数据

onlyTrashed()->restore()方法可以恢复被软删除(加了删除标记)的记录


模型类代码(app\index\model\Kc.php)

实例

<?php

namespace app\index\model;

use think\Model;
use think\model\concern\SoftDelete;
class Kc extends Model
{
	use SoftDelete;
    protected $table = 'kc';    //设置书库表名
    protected $pk = 'kc_id';    //设置主键
    protected $deleteTime = 'delete_time';  //设置删除标记字段(删除时间)
    protected $defaultSoftDelete = 0; //设置删除标记字段默认值
}

运行实例 »

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

模型操作代码(app\index\controller\Kc.php)

实例

<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Kc as KcModel;
//模型管理数据表 
class Kc extends Controller
{
	//模型查询多条记录,利用回调函数传参(闭包)
	public function query(){
		$kcs = KcModel::all(function($query){
			$query->where('dj','<',500)->where('cd','济南');
		});
		echo '查询kc表中单价小于500,产地是济南的商品<br>';
		dump($kcs);
	}
	//模型删除
	public function delete(){
		KcModel::destroy(function($query){
			$query->where('mc','气缸体');
		});
	}
	//软删除验证
	public function softDelete(){
		//软删除的记录不会出现在普通查询结果中
		$res = KcModel::where('dj','>',3000)->select();
		dump($res);
		//查询结果不排除软删除的记录
		$res1 = KcModel::withTrashed()->Where('dj','>',3000)->select();
		dump($res1);
		//只查询软删除的记录
		$res2 = KcModel::onlyTrashed()->select();
		dump($res2);

	}


}

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议