Yii createCommand 增删改查(CURD)

PHP 投稿 43600 1 评论

Yii createCommand 增删改查(CURD)

也许有人会问为什么不用 Yii 的 Model 去操作 DB,原因很简单,Yii 的 Model 写法上是方便了很多,但是会执行多余的 SQL,打开 Yii 的执行 log 就会发现。所以为了效率,为了 DB 服务器的性能考虑,还是使用 createCommand 的好。

Yii createCommand 新增

使用model::save()操作进行新增数据

$user= new User;         
$user->username =$username;  
$user->password =$password;  
$user->save()

使用createCommand()进行新增数据

Yii::$app->db->createCommand()->insert('user', [  
    'name' => 'test',  
    'age' => 30,  
])->execute();

批量插入数据

Yii::$app->db->createCommand()->batchInsert('user', ['name', 'age'], [  
    ['test01', 30],  
    ['test02', 20],  
    ['test03', 25],  
])->execute();

Yii createCommand 修改

使用model::save()进行修改

$user = User::find()->where(['name'=>'test'])->one(); //获取name等于test的模型$user->age = 40; //修改age属性值$user->save();   //保存

直接修改:修改用户test的年龄为40

$result = User::model()->updateAll(['age'=>40],['name'=>'test']);

使用createCommand()修改

Yii::$app->db->createCommand()->update('user', ['age' => 40], 'name = test')->execute();

Yii createCommand 删除

使用model::delete()进行删除

$user = User::find()->where(['name'=>'test'])->one(); 
$user->delete();

直接删除:删除年龄为30的所有用户

$result = User::deleteAll(['age'=>'30']);

根据主键删除:删除主键值为1的用户

$result = User::deleteByPk(1);

使用createCommand()删除

Yii::$app->db->createCommand()->delete('user', 'age = 30')->execute();

Yii createCommand 查询

一个 CDbCommand 实例可以重复使用多次建立几个查询。建立一个新的查询之前,需要调用 CDbCommand::reset() 方法以清理前面的查询。例子:

$command = Yii::app()->db->createCommand();
$users = $command->select('*')->from('tbl_users')->queryAll();
$command->reset(); // clean up the previous query
$posts = $command->select('*')->from('tbl_posts')->queryAll();
Yii::app()->db->createCommand($sql)->queryAll(); //查询所有行数据
Yii::app()->db->createCommand($sql)->queryRow(); //查询第一行数据
Yii::app()->db->createCommand($sql)->queryColumn(); //查询第一列数据
Yii::app()->db->createCommand($sql)->queryScalar(); //查询第一行的第一字段
// 首先要实例化一个CDbCommand对象
$command = Yii::app()->db->createCommand(); // 注意参数留空了。。
// 可用的方法列表如下:
->select(): SELECT子句
->selectDistinct(): SELECT子句,并保持了记录的唯一性
->from(): 构建FROM子句
->where(): 构建WHERE子句
->join(): 在FROM子句中构建INNER JOIN 子句
->leftJoin(): 在FROM子句中构建左连接子句
->rightJoin(): 在FROM子句中构建右连接子句
->crossJoin(): 添加交叉查询片段(没用过)
->naturalJoin(): 添加一个自然连接子片段
->group(): GROUP BY子句
->having(): 类似于WHERE的子句,但要与GROUP BY连用
->order(): ORDER BY子句
->limit(): LIMIT子句的第一部分
->offset(): LIMIT子句的第二部分
->union(): appends a UNION query fragmen

编程笔记 » Yii createCommand 增删改查(CURD)

赞同 (44) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(1)个小伙伴在吐槽
  1. 让产生了强烈的共鸣。
    魔法黑暗 2023-09-14 13:30 (1年前) 回复