ThinkPHP5.0数据库CURD的更新(Update)操作
// 更新记录
Db::table('data')
->where('id', 8)
->update(['name' => "framework"]);
出于数据安全考虑,ThinkPHP的upda
更新操作指更改数据表记录的单个或者多个字段,下面是示例代码: // 更新记录 Db::table('data') ->where('id', 8) ->update(['name' => "framework"]); 出于数据安全考虑,ThinkPHP的update方法必须使用更新条件而不允许无条件更新,如果没有指定更新条件,则会从更新数据中获取主键作为更新条件,例如当id是主键的时候下面的写法依然有效: // 更新记录 Db::table('data') ->update(['id' => 8, 'name' => "framework"]); 可以过滤需要更新的字段列表,例如只允许更新name字段的值(假设data表还存在email字段) // 更新记录 Db::table('data') ->field(['name']) ->where('id', 8) ->update([ 'name' => 'framework', 'email' => 'thinkphp@qq.com' ]); 实际更新的字段只有name,email字段的数据会被忽略。一般来说,update方法用于更新数据的多个字段数据库更新操作,如果只是更新某个字段的值,也可以用setField方法,例如: // 更新记录 Db::table('data') ->where('id', 8) ->setField('name','framework'); 返回值和update方法一致,因为setField最终也是调用的update方法。对于数字类型的字段的步长更新,框架提供了两个专门的方法用于递增和递减操作。 setInc/setDec支持延时写入,延时写入的含义是会把需要递增/递减的数据缓存起来(在缓存中进行递增和递减操作),在达到指定的时间计时后才会把最终计算的缓存数据写入数据库,避免频繁操作数据库带来的性能开销,下例中延时10秒,给score字段增加1: Db::table('user') ->where('id', 1) ->setInc('score', 1, 10); setInc和setDec可以同时使用延时写入,系统会自动计算最终需要写入数据库的值。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |