数据库+模型 - 增删改

  • 作者:KK

  • 发表日期:2016.12.16


Command对象

Query查询不同,要增删改的话不能只靠Query对象,Query对象始终都只是一个查询器的角色

进行增删改都需要一个yii\db\Command对象

获得Command对象的方式主要有2个:

  1. Yii::$app->db->createCommand(),不用传参数就可以了

  2. 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