yii框架AR模式整合
来源:互联网 发布:淘宝账号免费注册软件 编辑:程序博客网 时间:2024/06/09 20:42
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出。灰常感谢!!!
一、查询数据集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//1.该方法是根据一个条件查询一个集合
$admin
=Admin::model()->findAll(
$condition
,
$params
);
$admin
=Admin::model()->findAll(
"username=:name"
,
array
(
":name"
=>
$username
));
$infoArr
= NewsList::model()->findAll(
"status = '1' ORDER BY id DESC limit 10 "
);
//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'
=>
'%ad%'
));
二、查询对象的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//根据主键查询出一个对象,如: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'
;
//请注意,这是一个查询的条件,且只有一个查询条件.多条件用addCondition
$criteria
->params=
array
(
":username=>'admin'"
);
$criteria
->order =
"id DESC"
;
$criteria
->limit =
"3"
;
$post
=Post::model()->find(
$criteria
);
// $params isnot needed
//多条件查询的语句
$criteria
=
new
CDbCriteria;
$criteria
->addCondition(
"id=1"
);
//查询条件,即where id = 1
$criteria
->addInCondition(
'id'
,
array
(1,2,3,4,5));
//代表where id IN (1,2,3,4,5,);
$criteria
->addNotInCondition(
'id'
,
array
(1,2,3,4,5));
//与上面正好相法,是NOT IN
$criteria
->addCondition(
'id=1'
,
'OR'
);
//这是OR条件,多个条件的时候,该条件是OR而非AND
$criteria
->addSearchCondition(
'name'
,
'分类'
);
//搜索条件,其实代表了。。where name like '%分类%'
$criteria
->addBetweenCondition(
'id'
, 1, 4);
//between 1 and 4
$criteria
->compare(
'id'
, 1);
//这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition.
$criteria
->compare(
'id'
,
array
(1,2,3));
//即如果第二个参数是数组就会调用addInCondition
$criteria
->select =
'id,parentid,name'
;
//代表了要查询的字段,默认select='*';
$criteria
->join =
'xxx'
;
//连接表
$criteria
->with =
'xxx'
;
//调用relations
$criteria
->limit = 10;
//取1条数据,如果小于0,则不作处理
$criteria
->offset = 1;
//两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10
$criteria
->order =
'xxx DESC,XXX ASC'
;
//排序条件
$criteria
->group =
'group 条件'
;
$criteria
->having =
'having 条件 '
;
$criteria
->distinct = FALSE;
//是否唯一查询
三、查询个数,判断查询是否有结果
1
2
3
4
5
6
7
8
9
10
11
//该方法是根据一个条件查询一个集合有多少条记录,返回一个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
));
四、添加的方法
1
2
3
4
$admin
=
new
Admin;
$admin
->username =
$username
;
$admin
->password =
$password
;
if
(
$admin
->save() > 0){
echo
"添加成功"
; }
else
{
echo
"添加失败"
; }
五、修改的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Post::model()->updateAll(
$attributes
,
$condition
,
$params
);
$count
=Admin::model()->updateAll(
array
(
'username'
=>
'11111'
,
'password'
=>
'11111'
),
'password=:pass'
,
array
(
':pass'
=>
'1111a1'
));
if
(
$count
> 0){
echo
"修改成功"
; }
else
{
echo
"修改失败"
; }
$rt
= PostList::model()->updateAll(
array
(
'status'
=>
'1'
),
'staff_id=:staff AND host_id=:host'
,
array
(
':staff'
=>
$staff_id
,
':host'
=>
$host_id
));
//$pk主键,可以是一个也可以是一个集合,$attributes是要修改的字段的集合,$condition条件,$params传入的值
Post::model()->updateByPk(
$pk
,
$attributes
,
$condition
,
$params
);
$count
=Admin::model()->updateByPk(1,
array
(
'username'
=>
'admin'
,
'password'
=>
'admin'
));
$count
=Admin::model()->updateByPk(
array
(1,2),
array
(
'username'
=>
'admin'
,
'password'
=>
'admin'
),
'username=:name'
,
array
(
':name'
=>
'admin'
));
if
(
$count
>0){
echo
"修改成功"
; }
else
{
echo
"修改失败"
; }
Post::model()->updateCounters(
$counters
,
$condition
,
$params
);
$count
=Admin::model()->updateCounters(
array
(
'status'
=>1),
'username=:name'
,
array
(
':name'
=>
'admin'
));
if
(
$count
> 0){
echo
"修改成功"
; }
else
{
echo
"修改失败"
; }
//array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1
六、删除的方法
1
2
3
4
5
6
7
8
9
10
11
//deleteAll
Post::model()->deleteAll(
$condition
,
$params
);
$count
= Admin::model()->deleteAll(
'username=:name and password=:pass'
,
array
(
':name'
=>
'admin'
,
':pass'
=>
'admin'
));
$count
= Admin::model()->deleteAll(
'id in("1,2,3")'
);
//删除id为这些的数据
if
(
$count
>0){
echo
"删除成功"
; }
else
{
echo
"删除失败"
; }
//deleteByPk
Post::model()->deleteByPk(
$pk
,
$condition
,
$params
);
$count
= Admin::model()->deleteByPk(1);
$count
=Admin::model()->deleteByPk(
array
(1,2),
'username=:name'
,
array
(
':name'
=>
'admin'
));
if
(
$count
>0){
echo
"删除成功"
; }
else
{
echo
"删除失败"
; }
七、更多方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//createCommand(执行原生的SQL语句)
$sql
=
"SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id"
;
$rows
=Yii::app()->db->createCommand(
$sql
)->query();
foreach
(
$rows
as
$k
=>
$v
){
echo
$v
[
'add_time'
];
}
//事务的基本结构(多表更新插入操作请使用事务处理)
$dbTrans
= Yii::app()->db->beginTransaction();
try
{
$post
=
new
Post;
$post
->
'title'
=
'Hello dodobook!!!'
;
if
(!
$post
->save())
throw
new
Exception(
"Error Processing Request"
, 1);
$dbTrans
->commit();
// $this->_end(0,'添加成功!!!');
}
catch
(Exception
$e
){
$dbTrans
->rollback();
// $this->_end($e->getCode(),$e->getMessage());
阅读全文
0 0
- yii框架AR模式整合
- Yii框架ar
- Yii框架 AR 基础操作
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- PHP Yii 框架的数据库操作笔记一、查询,更新,删除的方法(AR模式)!
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- Yii框架的AR类scopes方法
- yii框架 AR增删改查 分页
- Yii框架 AR 增删改查
- Yii AR模式的增删改查
- Yii的AR模式及DAO
- HTML的基本知识
- 总结一下常用的VScode快捷键
- Hdu 1879 继续畅通工程 最小生成树 解题报告
- 单点登录原理与简单实现
- Android中的即时通讯WebSocket
- yii框架AR模式整合
- java-方法
- 使用 QtCreator 编译调试Ros 教程
- POJ 3191 The Moronic Cowmpouter 笔记
- android获取屏幕宽高与获取控件宽高(三种方法)
- MFC获得主窗口和父窗口指针
- HDU1879 继续畅通工程 【图论】【最小生成树】【Kruskal】
- mongodb 查询时间范围
- /* Java for 和 while */