通过字段值更新数据

  1. $this->updateByColumn(1, [
  2. 'name' => '李四'
  3. ]);//自动获取主键
  4. //相当于
  5. $this->mapDbAndTable()->where('主键', 1)->update([
  6. 'name' => '李四'
  7. ]);
  1. $this->updateByColumn(1, [
  2. 'name' => '李四'
  3. ], 'uid'); //手动传入字段名
  4. //相当于
  5. $this->mapDbAndTable()->where('uid', 1)->update([
  6. 'name' => '李四'
  7. ]);
  1. $this->updateByColumn(1, [
  2. 'name' => '李四'
  3. ], 'uid', 'users'); //手动传入表名 v2.6.2起可用
  4. //相当于
  5. $this->db()->table('users')->where('uid', 1)->update([
  6. 'name' => '李四'
  7. ]);
  1. $this->updateByColumn(1 [
  2. 'name' => '李四'
  3. ], 'uid', 'users', 'u_'); //手动传入表名,且特殊指定表前缀v2.6.5起可用
  4. //相当于
  5. $this->db()->table('users', 'u_')->where('uid', 1)->update([
  6. 'name' => '李四'
  7. ]);
若未传入表名(v2.6.2以下版本)。这边会自动判断当前Model中有无$table 属性,若有则自动提取$table属性为要操作的table,若没有则自动获取model名为表名如 UserModel 对应的表名为 pre_user,建议在XxxModel中声明$table属性。若没传入字段名框架会自动获取表的主键名称,如线上环境有修改表字段请清空相应缓存 点击查看详情说明。若没传入前缀,框架会自动获取当前Model有无$tablePrefix属性,若有则自动提取,若没有则使用配置文件中数据库相关配置里配置的表前缀,建议在当前模型的表前缀与配置中数据库相关配置里配置的表前缀不一样的时候在当前model中声明$tablePrefix属性

原文: http://doc.cmlphp.com/devintro/model/mysql/fastmethod/updateby.html