zoukankan      html  css  js  c++  java
  • Yii framwork crud 深入YII DAO 笔记三

    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://www.yiichina.com/api/CDbCommand

  • 相关阅读:
    MySQL 子查询
    MySQL 多表查询 内连接 和 外连接
    MySQL 分页
    MySQL 常用函数 流程控制
    Envoy基于文件系统的EDS动态配置
    Envoy学习笔记
    dapr入门学习
    浅谈cache
    List的初始化方式
    屌丝公司:设置服务器的时区、时间及时间同步
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3002630.html
Copyright © 2011-2022 走看看