yii curd操作

查询

复合查询

  $data = $query->orderBy('apply.created_at desc')
->leftJoin('party','party.id=apply.party_id')
->select('apply.*,party.site')
->offset($pagination->offset)
->limit($pagination->limit)
->where(['apply.user_id' => $user_id])
->asArray()
->all(); $user_info = MzCaseGroup::find()->alias('g')
->select(['i.*','g.create_time as times'])
->leftJoin('mz_insurance_user i','`g`.`user_id` = `i`.`user_id`')
->where(['group_id'=>$id])
->asArray()
->one();

插入

批量插入

 $res = Yii::$app->db->createCommand()->batchInsert('exam_paper_answer', ['subject_id', 'answers', 'score', 'paper_id'], $answer_arr)->execute();
               

更新

User::updateAllCounters(['point' => 8],'id=1');
User::updateAllCounters(['point' =>-8],'id=1');

事务

案例1

        $transaction = Yii::$app->db->beginTransaction();
try {
//存入数据
$exam_paper = new ExamPaper();
$exam_paper->exam_id = +$answer['exam_id'];
$exam_paper->partner_id = $user->id;
$exam_paper->start_time = $answer['start_time'];
$exam_paper->end_time = date("Y-m-d H:i:s");
$exam_paper->score = $total_score;
$exam_paper->status = $status;
if (!$exam_paper->save()) {
throw new yii\db\Exception(current($exam_paper->getFirstErrors()));
}
$paper_id = $exam_paper->id;
foreach ($answer_arr as $k => $v) {
array_push($answer_arr[$k] ,$paper_id);
}
if($answer_arr){
//批量存入题目
$res = Yii::$app->db->createCommand()->batchInsert('exam_paper_answer', ['subject_id', 'answers', 'score', 'paper_id'], $answer_arr)->execute();
if (!$res) {
throw new yii\db\Exception('请重新提交');
}
}else{
throw new yii\db\Exception('尚未做题');
}
$transaction->commit();
} catch (yii\db\Exception $e) {
$transaction->rollBack();
return ['code' => 2204, 'msg' => $e->getMessage()];
}

两表连查  

$model = Article::find()->joinWith(['type'])->select('new,t_name,article.t_id')->asArray()->all();
print_r($model);
use yii\db\Query;
$top10 = (new Query())
->from('article')
->select(['created_at','title'])
->groupBy(['created_at'])
->orderBy('id DESC')
->limit(10)
->all(); //参数绑定,查询操作
$sql='SELECT c.id,c.name,c.phone,c.age,c.sex,c.birthday,a.parent_id,a.camp_id,a.is_uppic,a.is_comment FROM `'.ChildrenApply::getTableSchema()->name.'` AS a left  JOIN `'.Children::getTableSchema()->name.'` AS c ON c.`id`=a.`children_id` WHERE a.`parent_id`=:parent_id AND a.`camp_id`=:camp_id  and a.status=1';
$res=Yii::$app->db->createCommand($sql)->bindValues([':parent_id' => $parent_id,':camp_id' => $camp_id])->queryAll();
插入操作
$res= Yii::$app->db->createCommand()->batchInsert(Children::tableName(), $dbKey, $dbValue)->execute();
//自增和自减
 

//关联分页查询

 

打印sql

echo $query->createCommand()->getRawSql();die;

参考https://www.yiichina.com/tutorial/95

yii2常用查询的更多相关文章

  1. YII2常用知识点总结

    YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...

  2. MySQL - 常用命令及常用查询SQL

    常用查询SQL #查看临时目录 SHOW VARIABLES LIKE '%tmp%'; #查看当前版本 SELECT VERSION(); 常用命令 #查看当前版本,终端下未进入mysql mysq ...

  3. Oracle DBA常用查询

    Oracle DBA常用查询 –1. 查询系统所有对象select owner, object_name, object_type, created, last_ddl_time, timestamp ...

  4. Solr常用查询语法笔记

    1.常用查询 q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符 ...

  5. 23个MySQL常用查询语句

    23个MySQL常用查询语句 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!> ...

  6. BOM/ROUTING/PO/WIP等模块常用查询

    常用查询scripts /*bom*/ select p_item.segment1,c_item.segment1,bic.COMPONENT_QUANTITY,bic.COMPONENT_YIEL ...

  7. SqlSugar常用查询实例-拉姆达表达式

    SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表 SqlSugarClient db = SugarContext.GetInstance( ...

  8. oracle数据库常用查询一

    oracle数据库常用查询一 sqlplus / as sysdba; 或sqlplus sys/密码 as sysdba;两者都是以sys登录.conn scott/tiger@orcl; conn ...

  9. ORACLE数据库常用查询二

    ORACLE数据库常用查询 1.查看表空间对应数据文件情况: SQL MB,AUTOEXTENSIBLE FROM DBA_DATA_FILES; TABLESPACE_NAME FILE_NAME ...

随机推荐

  1. Jenkins - ERROR: Exception when publishing, exception message [Failed to connect session for config [IP(projectName)]. Message [Auth fail]]

    今天在处理Jenkins的时候出现了一些异常,看着控制台,编译都是通过的,只是没有部署上来,查看了控制台日志,如下: 刚开始以为磁盘满了(参考:https://www.cnblogs.com/yuch ...

  2. asp.net 去掉小数点后面多余的0,本身为0则不显示

    很多时候,比如gridview内,不想现实从数据库带出的多余小数 ,比如 4.01000 ,可显示为 4.01 如果是 0.00000, 则显示为空白 /// <summary> /// ...

  3. sql server导出数据,详细操作!(自用)

    右键数据库——>任务——>导出数据 填写数据源连接信息 填写 要导入的数据库  连接信息 导出表时,全选,[编辑映射],勾选启用标识插入,这样才能让自增的字段 行正常插入. 然后导出即可. ...

  4. Mysql安装、设置密码、编码

    一.MySQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是 ...

  5. C# 同步更新网盘和本地的文件夹及文件

    该程序是可以更新本地文件或更新网盘文件或者网盘和本地同步更新 下载地址:https://files.cnblogs.com/files/Wonderful-Life/UpdateFilesSync.r ...

  6. Linux服务器---博客wordpress

    Wordpress Wordpress是一个开源的博客平台,是搭建个人博客的首选,用户可以去wordpress中文网站寻找帮助资料 1.下载wordpress软件(https://cn.wordpre ...

  7. 软件测试实验四----mujava变异测试

    1.整个路径结构 2.具体内容 2.1mujava的安装 2.1.1更改CLASSPATH环境变量,使命令行可以找到mujava的路径,方便之后mujava的使用. 2.1.2在系统某一路径下按照格式 ...

  8. QGraphicsItem的paint函数的一些相关问题

    在QGraphicsItem中,一个成员函数paint(),其声明如下: void QGraphicsItem::paint ( QPainter * painter, const QStyleOpt ...

  9. 在linux和windows用c++编写c接口的动态库

    linux 动态的头文件api.h #ifndef _API_H #define _API_H #ifdef DLL_IMPLEMENT #define DLL_EXPORT extern " ...

  10. Pandas: 使用str.replace() 进行文本清洗

    str.replace()可以一次处理一整个Series.str.replace()的正式形式为 Series.str.replace(pat, repl) ,其中pat为想要寻找的模式,一般为正则表 ...