1. 添加一条数据
1.1 常规用法 insert()
控制器:
<?php
// 使用Db类的 insert 方法向数据库提交数据,添加一条数据
public function add1()
{
$logs = [
'IP' => '127.0.0.1',
'USER' => 'W18001643',
'TIME' => '2020-05-11 09:52:48',
'OPERATION' => 'SELECT',
'LOGS' => '测试11'
];
$res = Db::name('logs')->insert($logs);
return $res === 1 ? '添加一笔数据成功' : '添加一笔数据失败';
}
postman 测试结果:
1.2 不希望抛出异常
控制器需要这样写:不存在的字段就会被直接舍弃
<?php
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->strict(false)->insert($data);
1.3 replace 写入
前提的要求是:mysql 数据库
<?php
如果是mysql数据库,支持replace写入,例如:
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data, true);
我先添加一个 唯一主键作为测试条件
控制器:设置成非严格字段对齐,如果失败 res = 0 , 如果找到了这个字段 res = 2 ,如果不存在 res = 1
<?php
// 使用 replace
public function add2()
{
$record = [
'PRODUCT1' => 'Star'
];
$res = Db::name('wh_product')
->strict(false)
->insert($record, true);
return $res > 0 ? '添加一笔数据成功' : '添加一笔数据失败';
}
postman 测试结果:
1.4 返回新增数据的ID
可以这么写:
<?php
$userId = Db::name('user')->insertGetId($data);
2. 添加多条数据
2.1 常规用法 insertAll()
控制器:
<?php
// 添加多笔数据 insertAll
public function add3()
{
$data = [
['BUILDNAME' => 'Test 1'],
['BUILDNAME' => 'Test 2'],
['BUILDNAME' => 'Test 3']
];
return Db::name('wh_build')->insertAll($data);
}
postman 测试:
注意:
- 使用 strict(false) 在这里无效,添加多条数据中必须需要保证 字段正确
2.2 limit 限定
如果批量插入的数据比较多,可以指定分批插入,使用limit
方法指定每次插入的数量限制。
<?php
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
...
];
// 分批写入 每次最多100条数据
Db::name('user')->data($data)->limit(100)->insertAll();