-
Yii2 中常用的增删改查操作总结
一、新增
1、使用save()
$model = new User(); $model->name = 'test'; $model->phone = '13000000000'; $model->email = '123456@qq.com'; $model->save();
2、使用createCommand 原生sql
$sql = "insert into user (name, phone, email) values ('test', '13000000000', '123456@qq.com')"; Yii::$app->db->createCommand($sql)->execute();
3、使用createCommand insert
Yii::$app->db->createCommand()->insert('user', [ 'name' => 'test', 'phone' => '13000000000', 'email' => '123456@qq.com' ])->execute();
4、批量插入
Yii::$app->db->createCommand()->batchInsert('user', ['name', 'phone', 'email'], [ ['test1', '13000000000', '123456@qq.com'], ['test2', '13000000001', '234567@qq.com'] ])->execute();
5、使用save()并校验参数正确性
$data = [ 'name' => 'test', 'phone' => '13000000000', 'email' => '123456@qq.com' ]; $model = new User(); // 将数据填充到模型的属性中 $model->load($data, ''); // 等效于下面这样: // $model->attributes = $data; // 或者 // $model->setAttributes($data); if ($model->validate()) { // 通过验证 $model->save(); } else { // 验证失败: $errors 是一个包含错误信息的数组 $errors = $model->errors; }
二、删除
1、使用delete()
$user = User::find()->where(['name' => 'test'])->one(); $user->delete();
2、使用deleteAll()批量删除
User::deleteAll(['name' => 'test']);
3、使用createCommand delete()
Yii::$app->db->createCommand()->delete('user', ['name' => 'test'])->execute();
4、使用createCommand 原生sql
$sql = "delete from user where name = 'test'"; Yii::$app->db->createCommand($sql)->execute();
三、更新
1、使用update()
$user = User::find()->where(['name' => 'test'])->one(); $user->phone = '13100000000'; $user->update(); // 或者 $user->save();
2、使用updateAll()
User::updateAll(['phone' => '13100000000'], ['name' => 'test']);
3、使用createCommand update()
Yii::$app->db->createCommand()->update('user', ['phone' => '13100000000'], ['name' => 'test'])->execute();
4、使用createCommand 原生sql
$sql = "update user set phone = '13100000000' where name = 'test'"; Yii::$app->db->createCommand($sql)->execute();
四、查询
1、使用model
// 查询一条记录 User::find()->select(['name', 'phone', 'email'])->where(['phone' => '13000000000'])->andWhere(['like', 'name', 'test'])->one(); // 查询一条记录数组返回 User::find()->where(['name' => 'test'])->asArray()->one(); // 查询所有记录 User::find()->where(['name' => 'test'])->all(); // 查询所有记录数组返回 User::find()->where(['name' => 'test'])->asArray()->all();
2、使用createCommand
// 查询一条记录 Yii::$app->db->createCommand("select * from user where name = :name and phone = :phone")->bindValues([':name' => 'test', ':phone' => '13000000000'])->queryOne(); // 查询所有记录 Yii::$app->db->createCommand("select * from user where name = :name and phone = :phone")->bindValues([':name' => 'test', ':phone' => '13000000000'])->queryAll();
3、使用yii\db\Query()
(new \yii\db\Query())->from('user')->where(['name' => 'test'])->all();
4、子查询
$subQuery = (new \yii\db\Query())->select(['id'])->from('user')->where(['like', 'name', 'test'])->all(); (new \yii\db\Query())->from('user')->where(['in', 'id', $subQuery])->all();
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式