Yii2.0数据库查询实例(三)
常用查询:
// WHERE admin_id >= 10 LIMIT 0,10
User::find()->select('*')->where(['>=', 'admin_id', ])->offset()->limit()->all()
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
$subQuery = (new Query())->select('COUNT(*)')->from('user');
$query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
// SELECT DISTINCT `user_id` ...
User::find()->select('user_id')->distinct();
更新:
//update();
//runValidation boolen 是否通过validate()校验字段 默认为true
//attributeNames array 需要更新的字段
$model->update($runValidation , $attributeNames); //updateAll();
//update customer set status = 1 where status = 2
Customer::updateAll(['status' => ], 'status = 2'); //update customer set status = 1 where status = 2 and uid = 1;
Customer::updateAll(['status' => ], ['status'=> '','uid'=>'']);
删除:
直接 model 删除 $model = User::find($id);
$model->delete(); 带有条件的删除 $connection ->createCommand()
->delete('tbl_user', 'status = 0')
->execute(); 使用 Query 查询删除 $connection ->createCommand('DELETE FROM tbl_user WHERE userid=:userid')
->execute(); 使用预处理语句删除
方法一 $model = $connection->createCommand('DELETE FROM tbl_user WHERE userid=:userid');
$model->bindParam(':userid', $userid);
$userid = ;
$model->execute(); 方法二 在 Yii2 使用预处理语句删除多个用户。 $model = $connection->createCommand('DELETE FROM tbl_user WHERE userid=:userid');
$model->bindParam(':userid', $userid);
// delete user 1
$userid = ;
$model->execute();
// delete user 2
$userid = ;
$model->execute(); 查找并且删除 $user = User::findOne();
$user->delete();
// 输出语句
// DELETE FROM `tbl_user` WHERE `id`='2' deleteAll() 删除多个
如果你不指定任何条件下,该方法将删除表中的所有行。例如删除用户表中状态条件是 active 和年龄大于20的用户。 方法一 User::deleteAll('status = :status AND age > :age', [':age' => , ':status' => 'active']);
//Output Query
//DELETE FROM `tbl_user` WHERE status = 'active' AND age > 20 方法二 User::deleteAll([
'and',
'type = :type_id',
['not in', 'usercategoryid', $categoriesList]
],
[
':type_id' =>
]);
//Output Query
//DELETE FROM `tbl_user` WHERE (type = 2) AND (`usercategoryid` NOT IN (1, 2, 3))
批量插入:
Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [
['','test1'],
['','test2'],
['','test3'],
])->execute();
查看执行sql
//UserModel
$query = UserModel::find()->where(['status'=>]);
echo $query->createCommand()->getRawSql();
Yii2.0数据库查询实例(三)的更多相关文章
- Yii2.0 数据库查询 [ 2.0 版本 ]
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- yii2.0数据库查询修改等方法
yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all(); 此方法返回所有数据: Tes ...
- Yii2.0数据库查询的一些简单的操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)
方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...
- Yii2.0 数据库查询方法
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- yii2.0 数据库查询操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- Yii2.0数据库缓存依赖发布的使用理解
对于产品中经常需要生成一些缓存类的东西,比如系统基础配置,商品分类等,每次修改调整后都要手动进行缓存发布,是不是非常麻烦!这时候Yii2.0的缓存依赖发布就起到至关重要的作用了!现将主要的使用流程介绍 ...
- MariaDB使用数据库查询《三》
MariaDB使用数据库查询 案例5:使用数据库查询 5.1 问题 本例要求配 ...
- YII2.0 数据库增删改查
/*==================== dkhBaseModel 数据库增删改查方法 start ================================*/ //新增一条数据 publ ...
随机推荐
- 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟
/** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...
- Vsphere笔记06 Vcenter 部署流程 1
Vcenter 部署流程 1 一.环境需求 1.需要两台装着WIN2K8 R2 64X的服务器 2.启用一台要添加活动目录角色,并且配置DC,DC的参数如下: 域名:justech-dc. ...
- Android开发教程:shape和selector的结合使用(转载)
shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...
- 我的第三个java程序 两数相加
import java.util.Scanner; public class Test { public static void main(String [] args) { Scanner sc = ...
- Xcode调试项目时取消弹出框提示授权
问题2: instruments wants permission to analyze other processes.'DTServiceHub'需要控制另外一个进程,以便继续调试,键入密码以允许 ...
- asp.net 定时间点执行任务的简易解决办法
这里的定时间点执行任务,指的是每天的某个时间执行一项任务. 比如每天凌晨七点的时候email发送一次报表. 这里首先想到的就是利用 Global.asax 文件来实现, 以下Global文件的内容. ...
- MySQL的语法高级之SELECT
1.语法:select 字段列表 from 子句 [where 子句][group by 子句][ order by 子句][having 子句][limit 子句]; 注解: 1.where子句对 ...
- IO-Polling的代码分析
在前一篇文章<IO-Polling实现分析与性能评測>中提到了IO-Polling与中断的原理差别,并通过两种模式下NVMe SSD的性能測试对两者进行了对照. 这篇文章将深入到IO-Po ...
- Android开发者必知的5个开源库
摘要:过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱 ...
- 七牛上传ipa后自动生成plist文件
1.利用模板技术动态生成plist文件的内容:(模板内容和data替换为plist需要的内容) //artTemplate <script src="js/template.js&qu ...