Yii2 数据库基本操作
//1.简单查询 $admin =Admin::model()->findAll( $condition , $params ); $admin =Admin::model()->findAll( "username=:name" , array ( ":name" => $username )); $user =( new Query())->select([ 'user_id' , 'name' ])->from( 'test.my_user' )->all(); $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 "删除失败" ; } |
2、原生SQL操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//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(); |
更新:
1
2
|
$command = $connection ->createCommand( 'UPDATE post SET status=1 WHERE id=1' ); $command ->execute(); |
插入更新删除:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 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());
Yii2 数据库基本操作的更多相关文章
- ecmall数据库基本操作
ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- MySQL系列:数据库基本操作(1)
1. 登录数据库 mysql -h localhost -u root -p 2. 数据库基本操作 2.1 查看数据库 mysql> SHOW DATABASES; +------------- ...
- yii2 数据库和ActiveRecord
Yii2数据库和 ActiveRecord 类 1.在 common/config/main-local.php 里面配置数据账号和密码. 2.ActiveRecord(活动记录,简称AR类),提供了 ...
- MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
1. 数据库基本操作 1.1 查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...
- Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...
- (三)mysql数据库基本操作
(1)SQL语句:结构化查询语句 DDL语句 数据定义语言:数据库丶表丶视图丶索引丶存储过程丶函数丶create drop alter DML语句 数据库操作语言:插入数据insert,删除数据del ...
- laravel基础课程---13、数据库基本操作2(lavarel数据库操作和tp对比)
laravel基础课程---13.数据库基本操作2(lavarel数据库操作和tp对比) 一.总结 一句话总结: 非常非常接近:也是分为两大类,原生SQL 和 数据库链式操作 学习方法:使用时 多看手 ...
- laravel基础课程---10、数据库基本操作(如何使用数据库)
laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...
随机推荐
- Jmeter直连postgresql数据库进行压测
关于Jmeter直连数据库进行压测,网上有好多教程了,pg数据库的相对少一些,今天自己测试了下,还是挺简单的,有个别需要注意的地方.相较于Loadrunner这么全面庞大的压测工具,Jmeter在数据 ...
- OAI搭建总结
我是参考网上的方法:oai搭建之eNB的文章, 接下来就根据自身所遇到的问题再这里总结一下步骤: 一.再官网上下载oai的文件openairinterface5g-master.zip 二.编译的过程 ...
- Java EE JSP内置对象及表达式语言
一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...
- Vue 编程之路(一)——父子组件之间的数据传递
最近公司的一个项目中使用 Vue 2.0 + element UI 实现一个后台管理系统的前端部分,属于商城类型.其中部分页面是数据管理页,所以有很多可以复用的表格,故引入自定义组件.在这里分享一下开 ...
- linux主机上,UnixBench性能测试工具使用
1,下载 wget http://soft.laozuo.org/scripts/UnixBench5.1.3.tgz [root@VM_0_15_centos test]# [root@VM_0_ ...
- Tess4J -4.0.2- Linux 实践 [解决:Tess4J - Native library (linux-x86-64/libtesseract.so) not found in resource path]
[本文编写于2018年7月5日] Tess4J是Tesseract的Java JNA wrapper.本文介绍了在CentOS 7 操作系统中使用Tess4J的步骤及注意事项.在正式开始之前,先花一点 ...
- hibernate.hbm.xml文件配置入门小结(1)
在Hibernate中,各表的映射文件xxx.hbm.xml可以通过工具生成,例如在使用MyEclipse开发时,它提供了自动生成映射文件的工具. hibernate.hbm.xml文件的基本结构如下 ...
- 提升Android ListView性能的几个技巧
ListView如何运作的? ListView是设计应用于对可扩展性和高性能要求的地方.实际上,这就意味着ListView有以下2个要求: 尽可能少的创建View: 只是绘制和布局在屏幕上可见的子Vi ...
- 【探路者】团队Alpha周贡献分数分配结果
经本组成员商议,根据老师提供的分数,(每人携带10分进入团队,[探路者]团队7人,共计35分). 本周每位同学携带10分进入组内,7人共计70分.分数公布如下: 吴雨丹 15分 贾雅杰 12分 蔺依铭 ...
- oracle数据库 expdp/impdp 和 exp/imp
--EXPDP导出,需要系统用户权限,一般不使用--sqlplus--1.创建dmp导出逻辑目录 create directory 目录名 as '目录路径' create directory exp ...