游学 2014-08-18 10:56:17 6446次浏览 0条评论 6 3 0

YII DAO有很多的现成的方法可以帮助我们,当然在使用之前我们首先要得到一个实例化的对象,比如:
$command = Yii::app()->db->createCommand();注意参数留空了,现在我们就可以通过对象$command
调用这些方法了,还有一点要说一下就是$command可以多次使用,但是在重复使用之前需要reset()一下
就可以了,下面我先罗列一些可供我们使用的方法:

->select()               SELECT子句
->selectDistinct() 并保持了记录的唯一性
->from():                构建FROM子句
->where():             构建WHERE子句
->join():                 在FROM子句中构建INNER JOIN 子句
->leftJoin():           在FROM子句中构建左连接子句
->rightJoin():         在FROM子句中构建右连接子句
->crossJoin():       添加交叉查询片段(没用过)
->naturalJoin():    添加一个自然连接子片段
->group():             GROUP BY子句
->having():           类似于WHERE的子句,但要与GROUP BY连用
->order():              ORDER BY子句
->limit():                LIMIT子句的第一部分
->offset():              LIMIT子句的第二部分
->union():             appends a UNION query fragment
select() //function select($columns='*')
select('username, email');//指定列        select('tbl_user.id');//使用表限定
select('username name');//使用别名     select(array('id', 'count(*) as num'));// 或使用数组作为参数

form() //function from($tables)
from('tbl_user,tbl_profile');//像sql那样   
from('tbl_user u, public.tbl_profile p');//使用表别名, 还可以使用完整的数据库限定名

WHERE  //function where($conditions, $params=array())
where(array('and', 'id=:id', 'username=:username'), array(':id'=>$id, ':username'=>$username);// 在where()中使用 AND
where( array('and', 'type=1', array('or', 'id=:id','username=abc') ),array(':id'=>$id));//在where()中使用 OR 与 AND用法相同
where(array('in', 'id', array(1,2,3)))// IN 操作符用法
where( array('like','name', '%tester%') );// LIKE 用法
where( array('like','name', array('%test%', '%sample%')) )//等于name LIKE '%test%' AND name LIKE '%sample%

// 添加了这么多,你都不知道合成后的SQL长啥样了,可以使用->text查看
join() //function join($table, $conditions, $params=array())
leftJoin() //function leftJoin($table, $conditions, $params=array())
rightJoin() //function rightJoin($table, $conditions, $params=array())
crossJoin() //function crossJoin($table)
naturalJoin() //function naturalJoin($table)
join('tbl_user', 'user_id=:id',array(":id"=>$id))// JOIN `tbl_profile` ON user_id=id(绑定叁数)
leftJoin('tbl_post p', 'p.user_id=id AND type=1')// LEFT JOIN `tbl_post` `p` ON p.user_id=id AND type=1

group() //function group($columns)
group('name, id')// GROUP BY `name`, `id`      group(array('tbl_user.name', 'id'))// GROUP BY `tbl_user`.`name`, `id`

having() //function having($conditions, $params=array())
having('id=:id',array(":id"=>$id))// HAVEING id=$id   having('id=1 or id=2')// HAVING id=1 or id=2
having(array('or', 'id=1', 'id=2'))// HAVING id=1 OR id=2

order() //function order($columns)
order('name, id desc')// ORDER BY `name`, `id` DESC
order(array('tbl_profile.name', 'id desc'))// ORDER BY `tbl_profile`.`name`, `id` DESC

limit() //function limit($limit, $offset=null) and offset() //function offset($offset)
limit(10)// LIMIT 10    limit(10, 20)// LIMIT 10 OFFSET 20    offset(20)// OFFSET 20

union() //function union($sql)执行指定的sql语句
union('select * from tbl_profile')// UNION (select * from tbl_profile)

总之就是YII DAO使用起来可能有些繁琐,所以适用于处理复杂的数据库操作,当然DAO的操作不止这些因为我在整理CRUD
所以就记录了这些,如果有兴趣大家可以直接查看这方面的
原文http://blog.csdn.net/lucifer_qiao/article/details/8763959
手册 http://www.yiichina.com/api/CDbCommand

觉得很赞
    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册