增: 1 第一种

$post=new Post;
$post->title='sample post';
$post->content='content for the sample 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个handle new4次

2 第二种

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

3 第三种

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

$sql="insert into user_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 where id=:id";
$command=profile::model()->dbConnection->createCommand($sql);
$command->bindParam(":id",$userid,PDO::PARAM_INT);
$this->rowflag=$command->execute();
 
$sql="update profile set pass=: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 set flag = :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)
{
更新成功后。。。
}

4 第四种

更新和存储应用同一个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 the specified 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 the specified 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 rows satisfying 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 the specified 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 specified primary key
$post=Post::model()->findByPk($postID,$condition,$params);

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

$checkuser = user_field_data::model()->findByAttributes(
    array('user_id' => Yii::app()->user->user_id, 'field_id' => $fieldid)); 第二种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_id in (:fields)",
    $params = array(':user_id' => Yii::app()->user->user_id, ':fields' => "$rule->dep_fields"));

// find the first row using the specified SQL statement $post=Post::model()->findBySql($sql,$params); 例子 user_field_data::model()->findBySql(“select id from user_field_data  where user_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 JOIN Post 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 the specified condition
$n=Post::model()->count($condition,$params);
// get the number of rows using the specified SQL statement
$n=Post::model()->countBySql($sql,$params);
// check if there is at least a row satisfying the specified condition
$exists=Post::model()->exists($condition,$params);Y

Yii增删改查操作的更多相关文章

  1. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

  2. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  3. 详谈easyui datagrid增删改查操作

    转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...

  4. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  5. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

  6. 05_Elasticsearch 单模式下API的增删改查操作

    05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...

  7. JDBC连接数据库及增删改查操作

    什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...

  8. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  9. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

随机推荐

  1. [LeetCode] Combination Sum II (递归)

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  2. WebMethod属性详解

    WebMethod有6个属性:.Description.EnableSession.MessageName.TransactionOption.CacheDuration.BufferResponse ...

  3. thinkPHP 接支付宝及时到账接口

    支付宝及时到帐接口,现在整理以下: 1.先将支付宝提供的公共类库函数库文件防盗thinkPHP的Vender目录下建的一个alipay文件下,以便之后的调用. //四个文件我分别给他们改了下名字,因为 ...

  4. jQuery的dom操作(二)转

    addClass() 向匹配的元素添加指定的类名. after() 在匹配的元素之后插入内容. append() 向匹配的元素内部追加内容. appendTo() 向匹配的元素内部追加内容. attr ...

  5. Xib的使用与File'Owner总结

    Xib的使用与File'Owner总结 一.XIB的适用范围 xib(也叫Nib)与storyboard一样是用来描述界面的. storyboard描述的是比较大型的,大范围.适合描述界面跳转等. 二 ...

  6. HashMap 扩容 加载因子

    HashMap: public HashMap(int initialCapacity, float loadFactor) { //初始容量不能<0 if (initialCapacity & ...

  7. IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用

    JRebel 介绍 JRebel for Intellij JRebel 在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效,  自从有了 JRe ...

  8. matlab将多条曲线绘制在一起

    figure; hold on; : plot(x(i,:),y(i,:)); end x=:*pi); hold on : y=sin(x+i*pi/)+exp(x/); plot(x,y, -(] ...

  9. hadoop NameNode HA 和ResouceManager HA

    官网配置地址: HDFS HA : http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvai ...

  10. 【转】解决:fatal error C1083: 无法打开预编译头文件

    http://blog.csdn.net/aafengyuan/article/details/7988584 是这样的,我创建了一个空项目,并通过"项目属性>C/C++>预编译 ...