yii的增删改查

增:
1第一种

$post=new Post;

$post->title='sample post';

$post->content='content for thesample post';

$post->createTime=time();/$post->createTime=new CDbexpression_r('NOW()');

$post->save();

 

$user_field_data= new user_field_data;

$user_field_data->flag=0;

$user_field_data->user_id=$profile->id;

$user_field_data->field_id=$_POST['emailhiden'];

$user_field_data->value1=$_POST['email'];

$user_field_data->save();
注当一个表存储4次的时候,需要创建4个handlenew4次


2 第二种

存储后我们需要找到这条记录的流水id 这样做 $profile = new profile; $profile->id;


3 第三种

用于更加安全的方法,来绑定变量类型 这样可以在同一个表中存储两个记录

$sql="insert intouser_field_data(user_id,field_id,flag,value1)values(:user_id,:field_id,:flag,:value1);";

$command=user_field_data::model()->dbConnection->createCommand($sql);

$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);

$command->bindParam(":field_id",$_POST['firstnamehiden'],PDO::PARAM_INT);

$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);

$command->bindParam(":value1",$_POST['firstname'],PDO::PARAM_STR);

$command->execute();

$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);

$command->bindParam(":field_id",$_POST['emailhiden'],PDO::PARAM_INT);

$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);

$command->bindParam(":value1",$_POST['email'],PDO::PARAM_STR);

$rowchange = $command->execute();

 

if( $rowchange != 0){ 修改成功 }// 用来判断

//注:update delete都可以用这个方法

$sql="delete from profile whereid=:id";

$command=profile::model()->dbConnection->createCommand($sql);

$command->bindParam(":id",$userid,PDO::PARAM_INT);

$this->rowflag=$command->execute();

 

$sql="update profile setpass=:pass,role=:role where id=:id";

$command=profile::model()->dbConnection->createCommand($sql);

$command->bindParam(":pass",$password,PDO::PARAM_STR);

$command->bindParam(":role",$role,PDO::PARAM_INT);

$command->bindParam(":id",$userid,PDO::PARAM_INT);

$this->rowflag=$command->execute();

// 同理变更updateAll()模式

$sql="update user_field_data setflag = :flag where user_id= :user_id and field_id= :field_id ";

原始sql语句

$criteria = new CDbCriteria;

$criteria->condition = 'user_id= :user_id and field_id= :field_id';

$criteria->params= array(':user_id' => $userid,':field_id' => $fieldid);

$arrupdate = array('flag' => $flag);

if(user_field_data::model()->updateAll($arrupdate,$criteria)!= 0)

{

更新成功后。。。

}



第四种


更新和存储应用同一个handle 流程:先查询记录是否存在,若存在就更新,不存在就新创建


注:1. 第一次查询的变量,要跟save()前的变量一致。2. 存储时候需要再次 new一下库对象


$user_field_data =user_field_data::model()->findByAttributes(

$attributes = array('user_id' =>Yii::app()->user->user_id, 'field_id' =>$key));

if ($user_field_data !== null)

{

    $user_field_data->value1= $value;

    $user_field_data->save();

}

else

{

    $user_field_data = new user_field_data;

    $user_field_data->user_id= Yii::app()->user->user_id;

    $user_field_data->field_id= $key;

    $user_field_data->value1= $value;

    $user_field_data->save();

}

 

$post=Post::model()->findByPk(10); //assuming there is a post whose ID is 10
$post->delete(); // delete the row from the database table
// delete the rows matching the specified condition
Post::model()->deleteAll($condition,$params);
// delete the rows matching the specified condition and primary key(s)
Post::model()->deleteByPk($pk,$condition,$params);



例子:
$post=Post::model()->findByPk(10);
$post->title=’new post title’;
$post->save(); // save the change to database

// update the rows matching thespecified condition
Post::model()->updateAll($attributes,$condition,$params);


例子:或者参考上面例子
$c=new CDbCriteria;
$c->condition=’something=1′;
$c->limit=10;
$a=array(‘name’=>’NewName’);
Post::model()->updateAll($a, $c);

// update the rows matching thespecified condition and primary key(s)
Post::model()->updateByPk($pk,$attributes,$condition,$params);


例子
$profile = profile::model()->updateByPk(
Yii::app()->user->user_id,
$attributes = array(‘pass’ => md5($_POST['password']), ‘role’ => 1));

// update counter columns in the rowssatisfying the specified conditions
Post::model()->updateCounters($counters,$condition,$params);



注:当项目没查找到整个对象会为空需要这样判定

if($rows !== null) 当对象不为空

{

    return true;

}else{

    return false;

}
SELECT
,读表时候用到
find
()
第一种find()

// find the first row satisfying thespecified condition

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

// 条件查询

$post =Post::model()->find('post_id=:post_id AND status=:status',

array(

  ':post_id'=>8,

  ':status'=>'active',

));
同样的语句,用另种方式表示

$criteria=new CDbCriteria;

$criteria->select='title';  //only select the 'title' column

$criteria->condition='postID=:postID';

$criteria->params=array(':postID'=>10);

$post=Post::model()->find($criteria); //$params is not needed
第二种find()

$post=Post::model()->find(array(

    'select'=>'title',

    'condition'=>'postID=:postID',

    'params'=>array(':postID'=>10),

));

// find the row with the specifiedprimary key

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

 

findByAttributes()
$post=Post::model()->findByAttributes($attributes,$condition,$params);
第一种findByAttributes()

$checkuser =user_field_data::model()->findByAttributes(

第二种findByAttributes()

$checkuser =user_field_data::model()->findByAttributes(

    $attributes = array('user_id' =>Yii::app()->user->user_id,'field_id' => $fieldid));

 

第三种当没有conditions时候,不用params

 

$user_field_data =user_field_data::model()->findAllByAttributes(

    $attributes = array('user_id' => ':user_id'),

    $condition = "field_idin (:fields)",

    $params = array(':user_id' =>Yii::app()->user->user_id,':fields' => "$rule->dep_fields"));

// find the first row using thespecified SQL statement
$post=Post::model()->findBySql($sql,$params);

 

例子
user_field_data::model()->findBySql(“select id from user_field_data whereuser_id = :user_id and field_id = :field_id “, array(‘:user_id’ =>$userid,’:field_id’=>$fieldid));
此时回传的是一个对象


第四种 添加其他条件

$criteria = new CDbCriteria;

$criteria->select ='newtime';//选择只显示哪几个字段要与库中名字相同,但是不能COUNT(newtime)as name这样写

$criteria->join = 'LEFT JOINPost ON Post.id=Date.id';//1.先要在relation函数中增加与Post表的关系语句 2.Date::model()->with('post')->findAll($criteria)

$criteria->group = 'newtime';

$criteria->limit  = 2; // 都是从0开始,选取几个

$criteria-> offset = 2;// 从哪个偏移量开始

print_r(Date::model()->findAll($criteria));

 

//得到行数目或者其他数目 count

// get the number of rows satisfying thespecified condition

$n=Post::model()->count($condition,$params);

// get the number of rows using thespecified SQL statement

$n=Post::model()->countBySql($sql,$params);

// check if there is at least a rowsatisfying the specified condition

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

 


转自:http://blog.163.com/liu_wen_xin123/blog/static/112248632201241413519506/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值