数据库+模型 - 增删改 ¶
作者:KK
发表日期:2016.12.16
Command对象 ¶
与Query查询不同,要增删改的话不能只靠Query对象,Query对象始终都只是一个查询器的角色
进行增删改都需要一个yii\db\Command对象
获得Command对象的方式主要有2个:
Yii::$app->db->createCommand()
,不用传参数就可以了new (\yii\db\Query())->createCommand()
然后再调用Command的insert、update、delete方法
INSERT(插入) ¶
$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(); //一样的效果
还可以批量插入:
$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(更新) ¶
$data = [
'name' => '小明2',
'status' => 1
];
$condition = ['>', 'age', 30];
Yii::$app->db->createCommand()->update('user', $data, $condition)->execute();
$condition部分和Query的where参数写法一样
DELETE(删除) ¶
$condition = ['>', 'age', 30];
Yii::$app->db->createCommand()->delete('user', $condition)->execute();
$condition部分和Query的where参数写法一样too