一、硬删除
什么是硬删除?硬删除就是直接从表中把记录移除了,这是一个硬删除(物理删除)
操作,硬删除会直接删除表中的记录,在需要找回数据的时候很麻烦,不推荐使用。
public function delBanner() {
$id = Request::delete('ids');
array_map(function ($id) {
// 查询指定id的轮播图记录
$banner = BannerModel::get($id,'items');
// 指定id的轮播图不存在则抛异常
if (!$banner) throw new BannerException([
'msg' => 'id为' . $id . '的轮播图不存在'
]);
// 执行关联删除
$banner->together('items')->delete();
}, $ids);
return writeJson(201, [], '轮播图删除成功!');
}
二、软删除
软删除不会从表中真正的删除记录,而是通过标识
使得这条记录在系统逻辑层面上不可见
。
(关联的数据模型上同样引入SoftDelete的命名空间即可)
// 引入SoftDelete的命名空间
use think\model\concern\SoftDelete;
class Banner extends Model
{
use SoftDelete;
protected $hidden = ['delete_time','update_time'];
// 方法名可以自定义,通过在模型类里面定义一个方法,声明关联关系,这个方法返回被关联模型的实例
public function items()
{ // 调用了模型实例的hasMany()方法,这个方法定义了当前模型与被关联模型BannerItem是一种一对多的关系
// 关联的内容是BannerItem模型里banner_id属性的值与当前模型的id属性的值一致的记录。
return $this->hasMany('BannerItem','banner_id', 'id');
}
}