一、新增

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();

Yii2 中常用的增删改查操作总结的更多相关文章

  1. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

  2. mongo中常用的增删改查

    db.students.find();//按性别分组,并显示每组的姓名db.students.aggregate({ $group:{ _id:'$sex', name:{$push:'$name'} ...

  3. 控制台程序实现利用CRM组织服务和SqlConnection对数据库中数据的增删改查操作

    一.首先新建一个控制台程序.命名为TestCol. 二.打开App.config在里面加入,数据库和CRM连接字符串 <connectionStrings> <add name=&q ...

  4. NodeJS中MySql的增删改查操作

    纯粹记录一下最基础写法,几乎没有写什么逻辑,写法也并不是很完善(因为我自己也刚刚摸索出来这么写可以...= =!)    望高手指教   也希望能够帮到比我还新的新手.... //1.insert操作 ...

  5. SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...

  6. SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...

  7. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  8. 48.Python中ORM模型实现mysql数据库基本的增删改查操作

    首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...

  9. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

随机推荐

  1. 【Vuejs】351- 带你解析vue2.0的diff算法

    前言 vue2.0加入了virtual dom,有向react靠拢的意思.vue的diff位于patch.js文件中,该算法来源于snabbdom,复杂度为O(n).了解diff过程可以让我们更高效的 ...

  2. H5中被废弃的标签

    <br>换行,已经被<p>标签进行替换 <hr>画线 <font> <b>,<u>,<i>,<s>:加粗 ...

  3. 【Java Web开发学习】Spring消息-ActiveMQ发送消息

    ActiveMQ发送消息 转载:http://www.cnblogs.com/yangchongxing/p/9042401.html Java消息服务(Java Message Service, J ...

  4. LeetCode 1290. 二进制链表转整数

    地址 https://www.acwing.com/solution/LeetCode/content/7132/ 题目描述给你一个单链表的引用结点 head.链表中每个结点的值不是 0 就是 1.已 ...

  5. 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]

    突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...

  6. MySQL的安装、启动和基础配置 —— mac版本

    安装 第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads/选择Community选项 第二步: ...

  7. Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程

    搭建所需环境Linux版本:Ubuntu 14.10 交叉编译器版本:arm-linux-gcc-4.4.3资源链接 何为交叉编译环境搭建交叉编译环境,即安装.配置交叉编译工具链.在Ubuntu环境下 ...

  8. diff命令的妙用

    在读<Writing compilers and Interpreters>一书时需要按章节修改代码,由于实在一行一行比对实在难受,于是想了个办法,利用diff命令比较两章之间代码的修改位 ...

  9. SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现

    SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...

  10. JS---案例:无缝的轮播图

    案例:无缝的轮播图 w <!DOCTYPE html> <html> <head lang="en"> <meta charset=&qu ...