在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。
使用软删除功能,需要在对象模型中引入use traits\model\SoftDelete;
并定义软删除标记字段protected $deleteTime = 'delete_time';
<?php
namespace app\index\model;
use think\Model;
use traits\model\SoftDelete;
class User extends Model
{
//导入软删除方法集
use SoftDelete;
//设置软删除字段
//只有该字段为NULL时,该字段才会显示出来
protected $deleteTime = 'delete_time';
public function user(){
}
}
控制器删除操作:
// 软删除
User::destroy(1);
// 真实删除
User::destroy(1,true);
$user = User::get(1);
// 软删除
$user->delete();
// 真实删除
$user->delete(true);
控制器查询方式:
默认查询时不包含软删除数据的,如需要包含软删除的数据则使用以下方式:
User::withTrashed()->find();
User::withTrashed()->select();
如果只需要查询软删除的数据,则使用:
User::onlyTrashed()->find();
User::onlyTrashed()->select();