Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]

在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出。灰常感谢!!!

一、查询数据集合


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//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%‘));

二、查询对象的方法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

//根据主键查询出一个对象,如: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=new
CDbCriteria; 

$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;
//是否唯一查询

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


1

2

3

4

5

6

7

8

9

10

11

//该方法是根据一个条件查询一个集合有多少条记录,返回一个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));

四、添加的方法


1

2

3

4

$admin
= new
Admin;       

$admin->username =
$username;

$admin->password =
$password;

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

五、修改的方法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

六、删除的方法


1

2

3

4

5

6

7

8

9

10

11

//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 "删除失败"; }

七、更多方法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//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‘];

}

 

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

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

try{

    $post
= new
Post;

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

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

    $dbTrans->commit();

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

}catch(Exception
$e){

    $dbTrans->rollback();

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

}

时间: 2024-10-24 16:17:24

Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]的相关文章

Sqlserver 实际开发中常见的数据库操作增删改查----增

注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常用到得一些增删改查方式.(首先我还要说一下,就是我虽然能写,但是我不知道这种查询方式叫什么类型查询,毕竟数据库这块以前都没干过,做.net开发也就一年左右,大家看我写的博客也会知道,以前搞前端U3D游戏开发的,不接触数据库,取数据调后台接口就行了,其他不用管.所以没做.net前,我也就是会大学时候学

Android下数据库操作——增删改查

Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询. 特点:增删改没有返回值,不能判断sql语句是否执行成功.sql语句手动写,容易写错 private MySqliteOpenHelper mySqliteOpenHelper;     public InfoDao(Context co

使用JDBC连接MySQL数据库操作增删改查

目录 1.首先这个Myeclipse的包名以及一些实现的类(这样子写是我的习惯) 2.接下来我们创建数据库(MySQL) 3.在数据库里面添加数据 4.首先是BaseDao,这个是重中之重,注意那个数据库的名字,强调所在的包名 5.这个是实体类,我相信大家都会写,注意所在的包名 6.接下来我们写BookingDao 7.下面我们写Servlet 1.查询的Servlet 2.添加的Servlet 3.修改的Servlet 4.删除的Servlet 8.配置web.xml 9.再次写JSP页面 1

Sqlserver 实际开发中常见的数据库操作增删改查----删

--我们就以院系,班级,学生来举例. create TABLE [dbo].YuanXi ( Id int IDENTITY(1,1) NOT NULL,--学校id 自增量 YuanXiName varchar(50) null, --院系名字 ) create TABLE [dbo].Class ( Id int IDENTITY(1,1) NOT NULL,--班级id 自增量 YuanXiID int null,--院系id ClassName varchar(50) null --班级

spring框架学习之--数据库操作增删改查

基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 1 consult.jdbc.driverClassName=com.mysql.jdbc.Driver 2 consult.jdbc.url=jdbc:mysql://xxxxxxxx:3307/consult_summer?useUnicode=true&characterEncoding=utf-8&am

Sqlserver 实际开发中常见的数据库操作增删改查----改

--我们就以院系,班级,学生来举例. create TABLE [dbo].YuanXi ( Id int IDENTITY(1,1) NOT NULL,--学校id 自增量 YuanXiName varchar(50) null, --院系名字 ) create TABLE [dbo].Class ( Id int IDENTITY(1,1) NOT NULL,--班级id 自增量 YuanXiID int null,--院系id ClassName varchar(50) null --班级

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

1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average(): 返回指定列的平均值. min(): 返回指定列的最小值. max(): 返回指定列的最大值. scalar(): 返回查询结果的第一行中的第一列的值. column(): 返回查询结果中的第一列的值. exists(): 返回一个值,该值指示查询结果是否有数据. where(): 添加查询条件 wi

转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系

原文链接:http://blog.csdn.net/u010271717/article/details/22044415 一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model代码: [python] view plain copy class Person(models.Model); name = models.CharField('作者姓名', max_length=10) age = models.IntegerField('作者年龄') class Book(m

使用MyEclipse对MongoDB数据库 进行增删改查操作

前面写了一篇MongoDB的下载与安装,接下来此篇写的是MongoDB数据库在JAVA程序中的基本功能: 使用MyEclipse对MongoDB数据库进行增删改查操作 1.导入JAR包 使用了Spring3.0:此类包,可以上网查询"MongoDB相关JAR包" 2.创建一个Person实体类 源代码如下: public class Person(){ //属性 Private String id; //id Private String name; //name Private in