您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Yii数据库操作增删改查-[增加查询更新删除AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出。灰常感谢!!!一、查询数据集合123456789101112131//1.该方法是根据一个条件查询一个集合$admin=Admin::model()-findAll($condition,$params);$admin=Admin::model()-findAll(username=:name,array(:name=$username));$infoArr=NewsList::model()-findAll(status='1'ORDERBYidDESClimit10);//2.findAllByPk(该方法是根据主键查询一个集合,可以使用多个主键)$admin=Admin::model()-findAllByPk($postIDs,$condition,$params);$admin=Admin::model()-findAllByPk($id,namelike:nameandage=: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*fromadminwhereusernamelike:name,array(':name'='%ad%'));415161718二、查询对象的方法123456789101//根据主键查询出一个对象,如: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*fromadminwhereusername=:name,array(':name'='admin'));1121314151617181920212//拼一个获得SQL的方法,在根据find查询出一个对象$criteria=newCDbCriteria;$criteria-select='username';//onlyselectthe'title'column$criteria-condition='username=:username';//请注意,这是一个查询的条件,且只有一个查询条件.多条件用addCondition$criteria-params=array(:username='admin');$criteria-order=idDESC;$criteria-limit=3;$post=Post::model()-find($criteria);//$paramsisnotneeded//多条件查询的语句$criteria=newCDbCriteria;$criteria-addCondition(id=1);//查询条件,即whereid=1$criteria-addInCondition('id',array(1,2,3,4,5));//代表whereidIN(1,2,3,4,5,);$criteria-addNotInCondition('id',array(1,2,3,4,5));//与上面正好相法,是NOTIN$criteria-addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND$criteria-addSearchCondition('name','分类');//搜索条件,其实代表了。。wherenamelike'%分类%'$criteria-addBetweenCondition('id',1,4);//between1and4$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;//两条合并起来,则表示limit10offset1,或者代表了。limit1,10$criteria-order='xxxDESC,XXXASC';//排序条件$criteria-group='group条件';$criteria-having='having条件';2232425262728293031323$criteria-distinct=FALSE;//是否唯一查询334353637383940414243444546三、查询个数,判断查询是否有结果1234567891011//该方法是根据一个条件查询一个集合有多少条记录,返回一个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*fromadminwhereusername=:name,array(':name'='admin'));//该方法是根据一个条件查询查询得到的数组有没有数据,如果有数据返回一个true,否则没有找到$exists=Post::model()-exists($condition,$params);$exists=Post::model()-exists(name=:name,array(:name=$username));四、添加的方法12$admin=newAdmin;$admin-username=$username;$admin-password=$password;34if($admin-save()0){echo添加成功;}else{echo添加失败;}五、修改的方法1234567891011121314Post::model()-updateAll($attributes,$condition,$params);$count=Admin::model()-updateAll(array('username'='11111','password'='11111'),'password=:pass',array(':pass'='1111a1'));if($count0){echo修改成功;}else{echo修改失败;}$rt=PostList::model()-updateAll(array('status'='1'),'staff_id=:staffANDhost_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($count0){echo修改成功;}else{echo修改失败;}Post::model()-updateCounters($counters,$condition,$params);$count=Admin::model()-updateCounters(array('status'=1),'username=:name',array(':name'='admin'));if($count0){echo修改成功;}else{echo修改失败;}//array('status'=1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加11516六、删除的方法1234567891011//deleteAllPost::model()-deleteAll($condition,$params);$count=Admin::model()-deleteAll('username=:nameandpassword=:pass',array(':name'='admin',':pass'='admin'));$count=Admin::model()-deleteAll('idin(1,2,3)');//删除id为这些的数据if($count0){echo删除成功;}else{echo删除失败;}//deleteByPkPost::model()-deleteByPk($pk,$condition,$params);$count=Admin::model()-d
本文标题:Yii数据库操作增删改查-[增加查询更新删除AR模式]
链接地址:https://www.777doc.com/doc-2829207 .html