您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關yii2中dao和ar的區別是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Active Record(AR)是一個流行的對象-關系映射(ORM)技術。每個AR 類代表一個數據表(或視圖),數據表(或視圖)的列在AR 類中體現為類的屬性,一個AR 實例則表示表中的一行。常見的CRUD 操作作為AR 的方法實現。
因此,我們可以以一種更加面向對象的方式訪問數據。$c = new CDbCriteria();是ActiveRecord的一種寫法,使ActiveRecord更加靈活,而拼裝sql則是最常見不過,下面看兩個例子。
注意: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的區別是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。