查询

//1.简单查询 

$admin=Admin::model()->findAll($condition,$params); 

$admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); 

$infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 "); 

//2. findAllByPk(该方法是根据主键查询一个集合,可以使用多个主键) 

$admin=Admin::model()->findAllByPk($postIDs,$condition,$params); 

$admin=Admin::model()->findAllByPk($id,"name like :name and age=:age",array(':name'=>$name,'age'=>$age)); 

$admin=Admin::model()->findAllByPk(array(1,2)); 

//3.findAllByAttributes (该方法是根据条件查询一个集合,可以是多个条件,把条件放到数组里面) 

$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params); 

$admin=Admin::model()->findAllByAttributes(array('username'=>'admin')); 

//4.findAllBySql (该方法是根据SQL语句查询一个数组) 

$admin=Admin::model()->findAllBySql($sql,$params); 

$admin=Admin::model()->findAllBySql("select * from admin where username like :name",array(':name'=>'%ad%')); 

User::find()->all();  此方法返回所有数据; 

User::findOne($id);  此方法返回 主键 id=1 的一条数据(举个例子);  

User::find()->where(['name' => '小伙儿'])->one();  此方法返回 ['name' => '小伙儿'] 的一条数据; 

User::find()->where(['name' => '小伙儿'])->all();  此方法返回 ['name' => '小伙儿'] 的所有数据; 

User::find()->orderBy('id DESC')->all();  此方法是排序查询; 

User::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 语句查询 user 表里面的所有数据; 

User::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 语句查询 user 表里面的一条数据; 

User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');  统计符合条件的总条数; 

User::find()->one();  此方法返回一条数据; 

User::find()->all();  此方法返回所有数据; 

User::find()->count();  此方法返回记录的数量; 

User::find()->average();  此方法返回指定列的平均值; 

User::find()->min();  此方法返回指定列的最小值 ; 

User::find()->max();  此方法返回指定列的最大值 ; 

User::find()->scalar();  此方法返回值的第一行第一列的查询结果; 

User::find()->column();  此方法返回查询结果中的第一列的值; 

User::find()->exists();  此方法返回一个值指示是否包含查询结果的数据行; 

User::find()->batch(10); 每次取 10 条数据  

User::find()->each(10); 每次取 10 条数据, 迭代查询 

二、查询对象的方法 

//根据主键查询出一个对象,如:findByPk(1); 

$admin=Admin::model()->findByPk($postID,$condition,$params); 

$admin=Admin::model()->findByPk(1); 

//根据一个条件查询出一组数据,可能是多个,但是他只返回第一行数据 

$row=Admin::model()->find($condition,$params); 

$row=Admin::model()->find('username=:name',array(':name'=>'admin')); 

//该方法是根据条件查询一组数据,可以是多个条件,把条件放到数组里面,查询的也是第一条数据 

$admin=Admin::model()->findByAttributes($attributes,$condition,$params); 

$admin=Admin::model()->findByAttributes(array('username'=>'admin')); 

//该方法是根据SQL语句查询一组数据,他查询的也是第一条数据 

$admin=Admin::model()->findBySql($sql,$params); 

$admin=Admin::model()->findBySql("select * from admin where username=:name",array(':name'=>'admin')); 

//拼一个获得SQL的方法,在根据find查询出一个对象  

$criteria=newCDbCriteria;  

$criteria->select='username';// only select the 'title' column  

$criteria->condition='username=:username';  //请注意,这是一个查询的条件,且只有一个查询条件.多条件用addCondition 

$criteria->params=array(":username=>'admin'"); 

$criteria->order ="id DESC"; 

$criteria->limit ="3"; 

$post=Post::model()->find($criteria);// $params isnot needed  

//多条件查询的语句 

$criteria= new CDbCriteria;    

$criteria->addCondition("id=1");//查询条件,即where id = 1  

$criteria->addInCondition('id',array(1,2,3,4,5));//代表where id IN (1,2,3,4,5,);  

$criteria->addNotInCondition('id',array(1,2,3,4,5));//与上面正好相法,是NOT IN  

$criteria->addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND  

$criteria->addSearchCondition('name','分类');//搜索条件,其实代表了。。where name like '%分类%'  

$criteria->addBetweenCondition('id', 1, 4);//between 1 and 4 

$criteria->compare('id', 1);  //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition. 

$criteria->compare('id',array(1,2,3));  //即如果第二个参数是数组就会调用addInCondition  

$criteria->select ='id,parentid,name';//代表了要查询的字段,默认select='*';  

$criteria->join ='xxx'; //连接表  

$criteria->with ='xxx'; //调用relations  

$criteria->limit = 10;  //取1条数据,如果小于0,则不作处理  

$criteria->offset = 1; //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10  

$criteria->order ='xxx DESC,XXX ASC' ;//排序条件  

$criteria->group ='group 条件';  

$criteria->having ='having 条件 ';  

$criteria->distinct = FALSE;//是否唯一查询 

三、查询个数,判断查询是否有结果 

//该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字 

$n=Post::model()->count($condition,$params); 

$n=Post::model()->count("username=:name",array(":name"=>$username)); 

//该方法是根据SQL语句查询一个集合有多少条记录,返回一个int型数字 

$n=Post::model()->countBySql($sql,$params); 

$n=Post::model()->countBySql("select * from admin where username=:name",array(':name'=>'admin')); 

//该方法是根据一个条件查询查询得到的数组有没有数据,如果有数据返回一个true,否则没有找到 

$exists=Post::model()->exists($condition,$params); 

$exists=Post::model()->exists("name=:name",array(":name"=>$username)); 

四、新增 

$admin= new Admin;     

$admin->username =$username; 

$admin->password =$password; 

if($admin->save() > 0){echo "添加成功"; }else{echo "添加失败"; } 

五、修改 

Post::model()->updateAll($attributes,$condition,$params); 

$count=Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1')); 

if($count> 0){ echo "修改成功"; }else{echo "修改失败"; } 

$rt= PostList::model()->updateAll(array('status'=>'1'),'staff_id=:staff AND host_id=:host',array(':staff'=>$staff_id,':host'=>$host_id)); 

//$pk主键,可以是一个也可以是一个集合,$attributes是要修改的字段的集合,$condition条件,$params传入的值 

Post::model()->updateByPk($pk,$attributes,$condition,$params); 

$count=Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); 

$count=Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin')); 

if($count>0){echo "修改成功"; }else{echo "修改失败"; } 

Post::model()->updateCounters($counters,$condition,$params); 

$count=Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); 

if($count> 0){ echo "修改成功"; }else{echo "修改失败"; } 

//array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1 

六、删除 

//deleteAll 

Post::model()->deleteAll($condition,$params); 

$count= Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin')); 

$count= Admin::model()->deleteAll('id in("1,2,3")');//删除id为这些的数据 

if($count>0){echo"删除成功"; }else{echo "删除失败"; } 

//deleteByPk 

Post::model()->deleteByPk($pk,$condition,$params); 

$count= Admin::model()->deleteByPk(1); 

$count=Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); 

if($count>0){echo "删除成功"; }else{echo "删除失败"; }
//createCommand(执行原生的SQL语句) 

$sql= "SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id"; 

$rows=Yii::$app->db->createCommand($sql)->query(); 

foreach($rows as $k => $v){ 

  echo$v['add_time']; 

} 

查询返回多行: 

$command = $connection->createCommand('SELECT * FROM post'); 

$posts = $command->queryAll(); 

返回单行: 

$command = $connection->createCommand('SELECT * FROM post WHERE id=1'); 

$post = $command->queryOne(); 

查询多行单值: 

$command = $connection->createCommand('SELECT title FROM post'); 

$titles = $command->queryColumn(); 

查询标量值/计算值: 

$command = $connection->createCommand('SELECT COUNT(*) FROM post'); 

$postCount = $command->queryScalar();

更新

$command = $connection->createCommand('UPDATE post SET status=1 WHERE id=1'); 

$command->execute();

插入更新删除

// INSERT 

$connection->createCommand()->insert('user', [ 

  'name' => 'Sam', 

  'age' => 30, 

])->execute(); 

// INSERT 一次插入多行 

$connection->createCommand()->batchInsert('user', ['name', 'age'], [ 

  ['Tom', 30], 

  ['Jane', 20], 

  ['Linda', 25], 

])->execute(); 

// UPDATE 

$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute(); 

// DELETE 

$connection->createCommand()->delete('user', 'status = 0')->execute();

事务

//事务的基本结构(多表更新插入操作请使用事务处理) 

$dbTrans= Yii::app()->db->beginTransaction(); 

try{ 

  $post= new Post; 

  $post->'title'= 'Hello dodobook!!!'; 

  if(!$post->save())throw newException("Error Processing Request", 1); 

  $dbTrans->commit(); 

// $this->_end(0,'添加成功!!!'); 

}catch(Exception$e){ 

  $dbTrans->rollback(); 

// $this->_end($e->getCode(),$e->getMessage());

来源:https://www.php.cn/php-weizijiaocheng-400207.html 十分感谢!

Yii2使用数据库操作汇总(增删查改、事务)的更多相关文章

  1. C# SQLite 创建数据库的方法增删查改语法和命令

    SQLite介绍 SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. SQLite数据库官方主页 ...

  2. python操作mysql增删查改

    # coding=utf-8 ''' python操作mysql,需安装MySQLdb驱动 安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-py ...

  3. springboot使用RestHighLevelClient7简单操作ElasticSearch7增删查改/索引创建

    本次操作是在  Windows上安装ElasticSearch7  进行操作 导入依赖 <?xml version="1.0" encoding="UTF-8&qu ...

  4. 关键字(8):数据库记录的增删查改insert,delete,select,update

    insert:一般只要参数个数和类型没问题,不会插入异常 INSERT INTO t_pos_dynamic_map(autoid, lt_termno, lt_merchno) VALUES(SEQ ...

  5. golang--连接redis数据库并进行增删查改

    (1)安装第三方开源的redis库: (2)在使用redis之前,需要安装第三方库,在GOPATH路径下执行安装指令--$GOPATH$:go get github.com/garyburd/redi ...

  6. Yii2.0数据库操作增删改查详解

    1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average():  ...

  7. Mysql 单表操作、增删查改(基础4)

    新建一个表,往里面插入数据. #新建一个表 mysql> create table test( -> id int, -> name varchar(20) -> );Quer ...

  8. Django笔记&教程 5-1 基础增删查改

    Django 自学笔记兼学习教程第5章第1节--基础增删查改 点击查看教程总目录 第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表. 这一章将介绍如何使用模 ...

  9. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

随机推荐

  1. 2020.09 问题总结(Oracle-->MySQL、Maven、JSP-->Thymeleaf、Druid)

    2020.09 问题总结(Oracle-->MySQL.Maven.JSP-->Thymeleaf.Druid) 数据库建表 Oracle 转 MySQL 问题 Oracle MySQL ...

  2. Layman PHP+JavaScript 实现图片无刷新上传

    html文件代码 <!-- ajax文件上传开始 --> <script type="text/javascript" src="/imageuploa ...

  3. sqlserver和oracle修改表结构

    sqlserver和oracle修改表结构常用SQL Server:1.增加列  ALTER TABLE users ADD address varchar(30);2.删除列  ALTER TABL ...

  4. 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?

    009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...

  5. 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介

    005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...

  6. Java知识系统回顾整理01基础04操作符05赋值操作符

    一.赋值操作 赋值操作的操作顺序是从右到左 int i = 5+5; 首先进行5+5的运算,得到结果10,然后把10这个值,赋给i public class HelloWorld { public s ...

  7. IDEA中,已经被加到版本库的文件如何在提交的时候忽略它们

    因为某些资源共享的原因,我在本地调试的时候需要修改Java启动程序类上的一些配置,禁用掉Kafka等等.然后我就想 把这些本地调试需要修改的但是线上服务不需要修改的给忽略掉,于是加入到了.gitign ...

  8. Python 导入模块的两种方法:import xxx 和from...import xxx

    import 方式导入模块 import tool.getsum.add # 导入模块,优先会从启动文件的当前目录开始寻找 # 如果找到,就使用 # 如果找不到,会在系统模块存放目录去 tool.ge ...

  9. iptables 和firewalld 区别

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

  10. 使用leveldb

    C++引入leveldb 编译安装: git clone --recurse-submodules https://github.com/google/leveldb.git cd leveldb m ...