1. 添加一条数据

1.1 常规用法 insert()

控制器:

  1. <?php
  2. // 使用Db类的 insert 方法向数据库提交数据,添加一条数据
  3. public function add1()
  4. {
  5. $logs = [
  6. 'IP' => '127.0.0.1',
  7. 'USER' => 'W18001643',
  8. 'TIME' => '2020-05-11 09:52:48',
  9. 'OPERATION' => 'SELECT',
  10. 'LOGS' => '测试11'
  11. ];
  12. $res = Db::name('logs')->insert($logs);
  13. return $res === 1 ? '添加一笔数据成功' : '添加一笔数据失败';
  14. }

postman 测试结果:
image.png

1.2 不希望抛出异常

控制器需要这样写:不存在的字段就会被直接舍弃

  1. <?php
  2. $data = ['foo' => 'bar', 'bar' => 'foo'];
  3. Db::name('user')->strict(false)->insert($data);

1.3 replace 写入

前提的要求是:mysql 数据库

  1. <?php
  2. 如果是mysql数据库,支持replace写入,例如:
  3. $data = ['foo' => 'bar', 'bar' => 'foo'];
  4. Db::name('user')->insert($data, true);

我先添加一个 唯一主键作为测试条件
image.png

控制器:设置成非严格字段对齐,如果失败 res = 0 , 如果找到了这个字段 res = 2 ,如果不存在 res = 1

  1. <?php
  2. // 使用 replace
  3. public function add2()
  4. {
  5. $record = [
  6. 'PRODUCT1' => 'Star'
  7. ];
  8. $res = Db::name('wh_product')
  9. ->strict(false)
  10. ->insert($record, true);
  11. return $res > 0 ? '添加一笔数据成功' : '添加一笔数据失败';
  12. }

postman 测试结果:
image.png

1.4 返回新增数据的ID

可以这么写:

  1. <?php
  2. $userId = Db::name('user')->insertGetId($data);

2. 添加多条数据

2.1 常规用法 insertAll()

控制器:

  1. <?php
  2. // 添加多笔数据 insertAll
  3. public function add3()
  4. {
  5. $data = [
  6. ['BUILDNAME' => 'Test 1'],
  7. ['BUILDNAME' => 'Test 2'],
  8. ['BUILDNAME' => 'Test 3']
  9. ];
  10. return Db::name('wh_build')->insertAll($data);
  11. }

postman 测试:
image.png

注意:

  1. 使用 strict(false) 在这里无效,添加多条数据中必须需要保证 字段正确

2.2 limit 限定

如果批量插入的数据比较多,可以指定分批插入,使用limit方法指定每次插入的数量限制。

  1. <?php
  2. $data = [
  3. ['foo' => 'bar', 'bar' => 'foo'],
  4. ['foo' => 'bar1', 'bar' => 'foo1'],
  5. ['foo' => 'bar2', 'bar' => 'foo2']
  6. ...
  7. ];
  8. // 分批写入 每次最多100条数据
  9. Db::name('user')->data($data)->limit(100)->insertAll();