企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[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