## 添加一條數據
可以使用`save`方法統一寫入數據,自動判斷是新增還是更新數據(以寫入數據中是否存在主鍵數據為依據)。
~~~
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->save($data);
~~~
如果你的數據中包含主鍵數據,可以傳入第二個參數強制新增數據。
~~~
$data = ['id' => 1, 'foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->save($data, true);
~~~
或者使用 `insert` 方法向數據庫明確新增一條數據
~~~
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data);
~~~
>[info] `insert` 或者`save`方法添加數據成功返回添加成功的條數,通常情況返回 1
默認情況下查詢構造器使用嚴格模式,也就是說如果你的數據表里面沒有`foo`或者`bar`字段,那么就會拋出異常。如果不希望拋出異常,可以通過下面的方法關閉嚴格模式:
~~~
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->strict(false)->insert($data);
~~~
不存在字段的值將會直接拋棄。如果你希望全局關閉嚴格模式,那么可以修改數據庫的配置參數
```
// 關閉嚴格模式
'fields_strict' => false
```
如果是MySQL數據庫,支持`replace`方式寫入,例如:
~~~
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->replace()->insert($data);
~~~
如果你的數據表采用了自增主鍵,并且添加數據后如果需要返回新增數據的自增主鍵,可以使用`insertGetId`方法新增數據并返回主鍵值:
~~~
$userId = Db::name('user')->insertGetId($data);
~~~
>[info] `insertGetId` 方法添加數據成功返回添加數據的自增主鍵
## 添加多條數據
添加多條數據直接使用 `insertAll` 方法傳入需要添加的數據(通常是二維數組)即可。
~~~
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
~~~
>[info] `insertAll `方法添加數據成功返回添加成功的條數
如果是mysql數據庫,支持`replace`寫入,例如:
~~~
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->replace()->insertAll($data);
~~~
>[danger] 確保要批量添加的數據字段是一致的
如果批量插入的數據比較多,可以指定分批插入,使用`limit`方法指定每次插入的數量限制。
~~~
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
...
];
// 分批寫入 每次最多1000條數據
Db::name('user')
->limit(1000)
->insertAll($data);
~~~
如果寫入的數據量比較大,會自動分成多個語句執行寫入,每次最多寫入1000條數據。
- 簡介
- 數據庫配置
- 分布式數據庫
- 查詢構造器
- 查詢數據
- 新增數據
- 更新數據
- 刪除數據
- 鏈式操作
- Where
- Table
- Alias
- Field
- Strict
- Limit
- Page
- Order
- Group
- Having
- Join
- Union
- Distinct
- Lock
- Cache
- Comment
- FetchSql
- Force
- Partition
- Replace
- FailException
- Extra
- Duplicate
- Sequence
- Procedure
- View
- 聚合查詢
- 分頁查詢
- 時間查詢
- 高級查詢
- 子查詢
- 原生查詢
- 事務操作
- 存儲過程
- 查詢事件
- JSON字段
- 模型
- 定義
- 新增
- 更新
- 刪除
- 查詢
- 查詢范圍
- 只讀字段
- JSON字段
- 自動時間寫入
- 獲取器
- 修改器
- 搜索器
- 類型轉換
- 模型輸出
- 模型事件
- 虛擬模型
- 關聯
- 一對一關聯
- 一對多關聯
- 遠程一對多
- 遠程一對一
- 多對多關聯
- 多態一對多
- 多態一對一
- 關聯預載入
- 關聯統計
- 關聯輸出
- SQL監聽
- 緩存機制
- 字段緩存
- 查詢緩存
- 擴展
- 自定義查詢類
- 自定義數據庫驅動