tp中有个模型删除很好用destroy
可以直接删除单个,也可以批量删除,还支持真假删除,以及一些闭包操作以支持更丰富的语法
//单个删除MyModel::destroy(1);//批量删除MyModel::destroy([1,2]);//真删除MyModel::destroy(1,true);//闭包删除MyModel::destroy(function($query){$query->where('id','>',10);});
但这个方法其实也有些弊端:
1,只能征对主键删除
//如果kid不是主键,那么以下语句没有任何意义ousekeepItems::destroy(function ($query) use ($id) {$query->where(['kid' => $id]);}, true);
2,批量删除时的性能问题
destroy()操作时,会先进行select()查询操作,再一个个去修改或者删除,从性能上来讲,其实不好。
这种情况下,我就只有放弃这个语法了,单纯使用db类来达到真删除操作,直接修改来实现软删除:
Db::name('test')->where(['kid' => $idArr])->delete();
在公共模型中加一个支持软删除的方法:
public static function softDelete(array $where){return self::update(['delete_time' => time()], $where, ['delete_time']);}
