开发文档 v2.x

替换(replace)

更新时间:2024年11月23日 18:35 浏览:638

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

public function replace(string $table, $object): int

参数:

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

返回值:

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

 

对象形式:

$obj = new stdClass();
$obj->id = 'f9acb7eb-f06a-11ec-8974-0242ac180065';
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';

$effectRows = Be::getDb()->repalce('user', $obj);

将编译 SQL

REPLACE  INTO `user` (`id`, `name`, `age`, `sex`) VALUES (?, ?, ?, ?);

再注入一行数据

['92aee504-04d6-11ed-b416-0242ac180065', '如花', '18', '女']

当写入的表中存在主键(本例中为 id),且主键值不存在时,执行插入,当主键值已存在,则更新记录,

 

也可以不指定主键

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

$effectRows = Be::getDb()->repalce('user', $obj);

将编译 SQL

REPLACE  INTO `user` (`name`, `age`, `sex`) VALUES (?, ?, ?);

再注入一行数据

['如花', '18', '女']

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

 

数组形式:

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

$errectRows = Be::getDb()->repalce('user', $arr);

 

导航