tp中有个模型删除很好用destroy
    可以直接删除单个,也可以批量删除,还支持真假删除,以及一些闭包操作以支持更丰富的语法

    1. //单个删除
    2. MyModel::destroy(1);
    3. //批量删除
    4. MyModel::destroy([1,2]);
    5. //真删除
    6. MyModel::destroy(1,true);
    7. //闭包删除
    8. MyModel::destroy(function($query){
    9. $query->where('id','>',10);
    10. });

    但这个方法其实也有些弊端:

    1,只能征对主键删除

    1. //如果kid不是主键,那么以下语句没有任何意义
    2. ousekeepItems::destroy(function ($query) use ($id) {
    3. $query->where(['kid' => $id]);
    4. }, true);

    2,批量删除时的性能问题

    destroy()操作时,会先进行select()查询操作,再一个个去修改或者删除,从性能上来讲,其实不好。
    这种情况下,我就只有放弃这个语法了,单纯使用db类来达到真删除操作,直接修改来实现软删除:

    1. Db::name('test')->where(['kid' => $idArr])->delete();

    在公共模型中加一个支持软删除的方法:

    1. public static function softDelete(array $where)
    2. {
    3. return self::update(['delete_time' => time()], $where, ['delete_time']);
    4. }