YII 1.0 增删改查
查询
查询多条返回数据集合
//1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); //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'=>'aaa%'));
查询一条返回对象
/根据主键查询出一个对象,如: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'; $criteria->params=array(":username=>'admin'"); $criteria->order = "id DESC"; $criteria->limit = "3"; $post=Post::model()->find($criteria); // $params isnot needed
查询个数,判断查询是否有结果
//该方法是根据一个条件查询一个集合有多少条记录,返回一个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));
添加
$categoryModel = new Category(); //new 一个model,然后使用save(),就是添加 $categoryModel->inputtime = time(); $categoryModel->cname = $_POST['Category']['cname']; if($categoryModel->save()){ $this->redirect(array('index')); }
$categoryModel = new Category(); $categoryModel->attributes = $_POST['Category']; //测试不能添加多字段,还没有找到解决方法 if($categoryModel->save()){ $this->redirect(array('index')); }
解决方法
model Category 的rules方法中验证的字段才会插入数据库,如果不需要验证字段还要插入数据库可以
array('type,catid,description,thumb,content,inputtime,updatetime','safe'),
修改
$categoryModel = Category::model(); $categoryInfo = $categoryModel->findByPk($id); //返回的还是对象,要是findAllByPk()就不行,返回的不是对象,会报错 if(isset($_POST['Category'])){ $categoryInfo->cname = $_POST['Category']['cname']; $categoryInfo->inputtime = $_POST['Category']['inputtime']; if($categoryInfo->save()){ $this->redirect(array('index')); } } $this->render('edit',array('categoryModel'=>$categoryInfo));
删除
$categoryModel = Category::model(); $isnot = Article::model()->findBySql("select * from {{article}} where catid = $id"); if($isnot){ Yii::app()->user->setFlash('hasArt', '栏目下面有文章,请先删除文章'); $this->redirect(array('index')); }else{ if($categoryModel->deleteByPk($id)){ //根据主键删除数据 $this->redirect(array('index')); } }