旗下导航:搜·么
当前位置:网站首页 > PHP框架 > YII > 正文

yii2中dao和ar区分【yii框架教程】,yii2

作者:搜搜PHP网发布时间:2019-12-01分类:YII浏览:82


导读:ActiveRecord(AR)是一个盛行的对象-关联映照(ORM)手艺。每一个AR类代表一个数据表(或视图),数据表(或视图)的列在AR类中体现为类的属性,一个AR实例则...
Active Record(AR)是一个盛行的对象-关联映照(ORM)手艺。每一个AR 类代表一个数据表(或视图),数据表(或视图)的列在AR 类中体现为类的属性,一个AR 实例则示意表中的一行。罕见的CRUD 操纵作为AR 的要领完成。

因而,我们能够以一种越发面向对象的体式格局接见数据。$c = new CDbCriteria();是ActiveRecord的一种写法,使ActiveRecord越发天真,而拼装sql则是最罕见不过,下面看两个例子。 (引荐进修:yii教程)

注重:AR 并非要处置惩罚一切数据库相干的使命。它的最好应用是模子化数据表为PHP 构造和实行不包括庞杂SQL 语句的查询。关于庞杂查询的场景,应运用Yii DAO。

$criteria = new CDbCriteria;       
//函数体式格局 
$criteria->addCondition("id=1"); //查询前提,即where id = 1   
$criteria->addInCondition('id', array(1,2,3,4,5)); //代表where id IN (1,23,,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,   
                                //即假如第二个参数是数组就会挪用addInCondition   
$criteria->addCondition("id = :id");   
$criteria->params[':id']=1;   
      
//属性体式格局   
$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; //是不是唯一查询

Yii数据接见对象(DAO)建立在PHP的数据对象(PDO)扩大上,使得在一个单一的一致的接口能够接见差别的数据库治理体系(DBMS)。运用Yii的DAO开辟的应用程序能够很容易地切换运用差别的数据库治理体系,而不需要修正数据接见代码。下面是DAO的例子:

示例代码

/**
     * 关于DAO的例子
     * 猎取一切用户名
     */
    public function getUsernames ()
    {
        $sqlStatement = ' SELECT `username` FROM `testdrive`.`tbl_user` ';
        $this->command = $this->connection->createCommand($sqlStatement);
        return $this->command->queryAll();
    }
    /**
     *
     * 增加一个用户
     */
    public function addUser ()
    {
        $sqlStatement = " INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES ('test', 'test', 'test@test.com') ";
        $this->command = $this->connection->createCommand($sqlStatement);
        return $this->command->execute();
    }

有几点注重的处所:

1,与DAO体式格局效果区分是:DAO体式格局 数组中的每一个元素还是数组。而经由过程CDbCriteria体式格局,数组中的元素是对象。

2,纵然该功用很壮大,仍有一些需求不能满足,此时仍需sql语句。比方select avg(num) amount from ****。

3,打印运转后的效果,可更深切yii这么做是怎样完成的

以上就是yii2中dao和ar区分的细致内容,更多请关注ki4网别的相干文章!

标签:yii2