开发文档 v2.x

快速替换(quickReplace)

更新时间:2024年12月6日 18:20 浏览:728

快速替换一个对象或数组到数据库

public function quickReplace(string $table, $object): int;

参数:

  • string $table - 表名
  • array | object $object - 要替换的对象或数组,对象属性或数组锓名需要和该表字段一致

返回值:

  • int - 影响的行数,如果数据无变化,则返回0,失败时抛出异常

 

快速替换方法没有预先编译 SQL 横板,而是直接生成 SQL,但数据会通过 PDO 提供的 quote 方法处理 防止注入。

因为少了预编译 SQL 的开销,快速替换方法执行速度更快,特别是批量替换时。

 

对象形式:

$obj = new stdClass();
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';

$id = Be::getDb()->quickReplace('user', $obj);

将执行 SQL

REPLACE INTO `user` (`name`, `age`, `sex`) VALUES ('如花', '18', '女');

如果 name 字段设置了唯一主键,且存在 name = 如花 的记录时,则执行更新操作,否则将执行 插入操作。

 

数组格式:

$arr = [
    'name' => '如花',
    'age' => 18,
    'sex' => '女'
];

$id = Be::getDb()->quickReplace('user', $arr);

 

导航