91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii2中dao和ar的區別是什么

發布時間:2021-01-07 10:51:30 來源:億速云 閱讀:501 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關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的區別是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万安县| 贵州省| 夏津县| 红原县| 大安市| 平罗县| 靖州| 镇原县| 黔南| 梁平县| 孟津县| 建平县| 晋州市| 利津县| 灵石县| 安顺市| 木兰县| 大邑县| 新乐市| 海盐县| 云安县| 石家庄市| 中卫市| 商都县| 新野县| 筠连县| 寿阳县| 游戏| 大名县| 黄骅市| 墨脱县| 望都县| 永宁县| 三亚市| 庆阳市| 赤壁市| 天长市| 金秀| 尉氏县| 乌拉特前旗| 武冈市|