Yii增删改查操作
增: 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增删改查操作的更多相关文章
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
随机推荐
- ArcGIS API for Silverlight 调用GP服务绘制等值面
原文:ArcGIS API for Silverlight 调用GP服务绘制等值面 GP服务模型如下图: 示例效果图片如下:
- Ubuntu 一键安装pptp
手工配置完开始能用,后来被机房停机之后无法恢复,下面文章介绍的使用脚本简单好用,感谢作者,下面是链接: http://blog.sina.com.cn/s/blog_6e7bae020102v8wm. ...
- imx6 android5.1 打开 调试串口
imx6的工板烧录android 5.1的镜像,uboot中能使用debug口,kernel,文件系统中不能使用debug口. 打开kenel和文件系统debug口方法,在uboot的bootargs ...
- 在CentOS6.5上安装Tomcat7
Tomcat大本营地址:http://tomcat.apache.org/ 本文使用到的Tomcat7下载地址:http://apache.opencas.org/tomcat/tomcat-7/v7 ...
- Inside Flask - app.py - 1
Inside Flask - app.py - 1 除 werkzeug 和 jinja2 等依赖库外,app.py 是在 Flask 的 __init__.py 中导入的第一个 Flask 自身的模 ...
- [OpenS-CAD]屏幕坐标转换分析
蓝色为地理坐标系XOY,记为坐标系A:黄色为屏幕坐标系xoy,记为坐标系B.地图的左下角点为(X0,Y0)可很容易的平移到坐标原点.因此这里只考虑地图位于坐标原点的情况,如图二也记为坐标系A. 设地理 ...
- Vue.2.0.5-Vue 实例
构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模式, Vue 的设 ...
- CRM 迁移服务器备忘
1. 安装IIS 2. 安装sqlexpress 2005, sql management studio express 3. 安装.net framework4.0 4. 安装filezilla S ...
- Effective C++ 5.实现
//条款26:尽量延后变量的定义式出现的时间 // 1.不仅应该延后变量的定义,更应该直到使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初始值为止.如果这样,不仅能够避免构造和析构的非必 ...
- Swift游戏实战-跑酷熊猫 04 熊猫的跳和滚的动作
这节内容,我们利用上一节学过的内容,给熊猫添加跳和滚动的动作.同时通过重载touchBegan方法来响应动作.切换跑,跳,滚. 要点: 通过序列帧纹理产生动画: SKAction.animatWith ...