Blogger Information
Blog 46
fans 3
comment 2
visits 39430
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ThinkPHP 模型操作之查询、软删除 2018年5月24日
墨雨的博客
Original
1951 people have browsed it

一、模型基本操作

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

	}


}

运行实例 »

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


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