最新消息: 新版网站上线了!!!

Active Record 操作数据库

一:创建数据:

1:简单例子:

$post=new Post;
$post->title="…………";
$post->content='…………';
$post->save();

 

2:attributes的使用:

$psot = new Post;

$psot->attributes(array('title'=>'…………','content'=>'…………'));

或$psot->setAttributes(array('title'=>'…………','content'=>'…………'));

$psot->save();

使用attributes可以直接获取数组值(如$_POST),不用逐个赋值,$psot->attributes = $_POST['post'];

 

二:读取数据:

1: 获取一行数据:find系列 

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

$post=Post::model()->findByPk($postID,$condition,$params); $post=Post::model()->findByAttributes($attributes,$condition,$params); $post=Post::model()->findBySql($sql,$params);

    例:$post=Post::model()->find('postID=:postID', array(':postID'=>10)); // 查找 postID=10 的那一行

        echo $post->title; //输出帖子的标题

    注: $condition相当于while条件,可以有多个值,也可以不绑定参数直接赋值。

    $post=Post::model()->find('status=:status;class=mood', array(':status'=>8)); //查找status=9 class=mood的那一行 

 

2:获取多行数据:findAll系列

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

$posts=Post::model()->findAllByPk($postIDs,$condition,$params); $posts=Post::model()->findAllByAttributes($attributes,$condition,$params); $posts=Post::model()->findAllBySql($sql,$params);

 

 

3:为了方便,(Yii)还提供了如下方法:

    获取满足指定条件的行数:          $n=Post::model()->count($condition,$params); 

    通过指定的 SQL 获取结果行数:     $n=Post::model()->countBySql($sql,$params); 

    检查是否至少有一行复合指定的条件:$exists=Post::model()->exists($condition,$params);

 

三:更新数据

1:更新符合指定条件的行    

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

    $attributes参数是一个以列名做索引的值的数组,所以处理POST表单时,可以如下处理:

    Post::model()->updateAll($_POST['apply'],'user_id=:user_id',array(':user_id'=>10));

2:更新符合指定条件和主键的行 

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

3:更新满足指定条件的行的计数列(对数值实现:递增、递减) 

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

    例:

    Post::model()->updateCounters(array('count'=>1),'parentid=:parent',array(':parent'=>0));//自动叠加1
    Post::model()->updateCounters(array('count'=>-1),'parentid=:parent',array(':parent'=>0));//自动递减1

 

四:删除记录

 

1:删除符合指定条件的行

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

2: 删除符合指定条件和主键的行

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

 

转载请注明:谷谷点程序 » Active Record 操作数据库