[TOC]
# Command对象
与[Query查询](http://www.kkh86.com/it/yii2/guide-db-query.html)不同,要增删改的话不能只靠Query对象,Query对象始终都只是一个**查询器**的角色
进行增删改都需要一个[yii\\db\\Command](http://www.yiichina.com/doc/api/2.0/yii-db-command)对象
获得Command对象的方式主要有2个:
1. `Yii::$app->db->createCommand()`,不用传参数就可以了
2. `new (\yii\db\Query())->createCommand()`
然后再调用Command的insert、update、delete方法
# INSERT(插入)
~~~php
$data = [
'name' => '小明',
'age' => 9,
'email' => 'qqq@xx.com',
];
$rows = Yii::$app->db->createCommand()->insert($tableName, $data)->execute();
echo $command->rawSql;
print_r([
$rows,
$command->rawSql,
$command->pdoStatement->fetch(PDO::FETCH_ASSOC)
]);
(new \yii\db\Query())->createCommand()->insert($tableName, $data)->execute(); //一样的效果
~~~
还可以批量插入:
~~~php
$fields = ['name', 'age', 'email']; //定义要插入的字段
$userList = [
['小明', 11, '123@xx.com'], //第一条记录的数据
['小红', 12, '223@xx.com'], //第二条,你懂的
['小东', 13, '323@xx.com'],
['小龙', 14, '423@xx.com'],
];
Yii::$app->db->createCommand()->batchInsert($tableName, $fields, $userList)->execute(); //返回插入的行数
~~~
# UPDATE(更新)
~~~php
$data = [
'name' => '小明2',
'status' => 1
];
$condition = ['>', 'age', 30];
Yii::$app->db->createCommand()->update('user', $data, $condition)->execute();
~~~
`$condition`部分和Query的where参数写法一样
# DELETE(删除)
~~~php
$condition = ['>', 'age', 30];
Yii::$app->db->createCommand()->delete('user', $condition)->execute();
~~~
`$condition`部分和Query的where参数写法一样too
- 目录
- 配置
- 简介
- 别名
- gii
- 配置项
- 模型
- 简介
- 增删改查
- AR和model
- 模型事件
- 场景
- query查询
- 增删改
- AR查询器
- 模型关系定义
- AR模型连表查询
- fields
- where拼接
- 模块
- 创建模块
- 控制器
- 表单
- 跳转
- 响应
- 验证器
- Action
- 组件
- url
- 分页
- 验证码
- 缓存
- 文件上传
- 预启动组件
- 事件
- 自定义组件
- redis
- 日志
- 行为
- cookie和session
- 基础知识
- 创建一个类
- 配置一个类
- object基类
- component组件类特性
- phpstorm无法更改php等级
- url地址美化
- 过滤器
- 请求处理
- 请求组件
- 响应组件
- header
- 用户登录
- 实现IdentityInterface接口
- 登录
- 自动检测登录
- 获取用户信息
- 访问行为追踪
- phpstorm+postman断点调试