因而,我们能够以一种越发面向对象的体式格局接见数据。$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网别的相干文章!