## insert() 方法
insert()方法大大简化了destoon系统的数据插入方式
insert(参数一,参数二),共两个参数:
参数一:插入的数据,数组类型,可以是一维或二维数组,必填参数
参数二:是否使用replace方式,非必填参数,使用参数二时,参数一只能传一维数组,参数二为布尔型值,可使用:0,1 或者 true,false
#### 单表单条信息插入
向表中插入一条信息,传一维数组,key必须与数据库中字段对应,否则会报错。
示例
```
$data = ['title'=>'www.dtmoban.com','username'=>'gaofei'];
Db::table('test')->insert($data);
```
#### 单表多条信息插入
向表中插入多条信息,传二维数组,key必须与数据库中字段对应,否则会报错。
示例
```
$data = [
['title'=>'www.dtmoban.com','username'=>'gaofei'],
['title'=>'www.dtmoban.com','username'=>'gaofei2'],
['title'=>'www.dtmoban.com','username'=>'gaofei3'],
['title'=>'www.dtmoban.com','username'=>'gaofei4']
];
Db::table('test')->insert($data);
```
#### replace方式插入数据
传第二个可选参数即可
示例:
```
$data = ['title'=>'www.dtmoban.com','username'=>'gaofei'];
Db::table('test')->insert($data,true);
```
注意:只能使用一维数组,单条插入。
## content() 方法
这是一个辅助方法,可选。
用于向主表插入一条信息时,返回主表主健id,然后向主表关联的副表插入一条或多条信息,并且自带事务功能,如果副表插入失败,则删除主表信息。 这不是真正的事务,只是模拟的事务功能。
共四个参数: content(表名,关联字段,数据,范围,replace模式)
replace模式时只能插入单条数据,并且关联字段得是副本的主健
示例:
```
//向主表插入一条数据,并且向副表插入一条
$data = ['title'=>'www.dtmoban.com','username'=>'gaofei'];
$content_data['content'] = "fdddddd";
Db::table('test')->content('test_data','itemid',$content_data,'content',true)->insert($data);
//向主表插入一条数据,并且同副表插入多条数据
//如果副表多插失败或者插入条数不符合,则撤回整个操作
$data['name'] = '小品02';
$data['number'] = 1002;
$content_data[] = ['title'=>'5454545','price'=>'100'];
$content_data[] = ['title'=>'5454545','price'=>'100'];
$content_data[] = ['title'=>'5454545','price'=>'100'];
$content_data[] = ['title'=>'5454545','price'=>'100'];
$content_data[] = ['title'=>'5454545','price'=>'100'];
$content_data[] = ['title'=>'5454545','price'=>'100'];
Db::table('test')->content('test_product','tid',$content_data,'title,price')->insert($data);
```
## field()方法
用来限制插入的字段,安全性更高,一般用于数据是前台提交过来的情况,防止恶意住表中关健字段插非法信息。
示例:
```
$data = [
['name'=>'标题01','number'=>10],
['name'=>'标题02','number'=>11],
['name'=>'标题03','number'=>12],
['name'=>'标题04','number'=>13],
['name'=>'标题05','number'=>14]
];
//单表批量插入,不支持副表同插
Db::table('test')->field('name,number')->insert($data);
```
除了 name和number字段外,如果$data中还有其它字段就会被自动过忽略掉。
## isertAll()方法
用于向数据库同时插入多条信息,和insert()方法传二维数组时效果是一样的。
示例:
```
$data = [
['name'=>'标题01','number'=>10],
['name'=>'标题02','number'=>11],
['name'=>'标题03','number'=>12],
['name'=>'标题04','number'=>13],
['name'=>'标题05','number'=>14]
];
//单表批量插入,不支持副表同插
Db::table('test')->field('name,number')->insertAll($data);
```
## debug() 方法
用于打印插入sql语句,多条数据插入时,只会返回第一条数据的sql
- 序言
- 基础
- 获取DTapi
- 环境要求
- 目录结构
- 安装DTapi
- 命名规范
- 开发规范
- 自动加载方法
- 命名空间规则
- 依赖注入与反射
- 控制器
- 访问控制器
- 如何制造一个控制器
- 控制器与模型绑定
- 模型
- 创建模型的方法
- 如何使用模型
- 应用扩展
- 扩展示例
- 怎样使用扩展
- 中间件
- condition.class.php
- 使用
- field()
- return()
- or()
- and()
- minmax()
- sql()
- debug()
- Data.class.php
- 获取数据方式
- get()
- post()
- file()
- all()
- 安全过虑
- int
- float
- null
- string
- 应用配置
- 应用公共函数
- 数据库
- 查询
- 添加
- 删除
- 修改
- 系统扩展