国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Yii2 優(yōu)雅的 Active Record

劉福 / 1844人閱讀

摘要:寫在最后這些就是我在學(xué)習(xí)中總結(jié)的一些有關(guān)的改進(jìn),不得不說,的這些改進(jìn)使得我們的開發(fā)更友好,更優(yōu)雅了,僅是,就可以讓人用的很爽,所以,上手吧原文來自

這篇文章我們來看看在 Yii2 之中的 Active Record,為啥要將 Active Record 多帶帶出來說呢?因?yàn)閭€(gè)人認(rèn)為這是 Yii(不管是 Yii1.1 還是 Yii2)最強(qiáng)大的一部分功能之一,何況又遇上在 Yii2 中其實(shí)對 Active Record的改進(jìn)還是比較多的,所以我們就通過這篇文章來瞅瞅 Yii2 的 Active Record 新特性。

1.支持更多的數(shù)據(jù)庫

Yii2的Active Record首先值得稱道的一點(diǎn)就是它已經(jīng)可以支持更多的數(shù)據(jù)庫,包括一些NoSQL類型的數(shù)據(jù)庫如MongoDB,還有一些流行的存儲后端如: elasticsearch, redis, Sphinx search也得到很好的支持,現(xiàn)在真是隨意你怎么玩數(shù)據(jù)了。因?yàn)槲覀冊谙霌Q一個(gè)存儲后端的時(shí)候可以輕松地在配置文件里切換過來,完全不用去修改Active Record的代碼,酷斃!

2.在Yii2中使用Active Record查詢數(shù)據(jù)

在Yii2中使用Active Record的時(shí)候,第一個(gè)最直觀的感受可能就是model()調(diào)用已經(jīng)跟Yii1.1變得不同了,可以說所有的查詢函數(shù)都源自 find()findBySql()這兩個(gè)函數(shù),所以像在Yii1.1中的Post::model()->findAll()等函數(shù)就沒有了。這里對Active Record的查詢模塊介紹都是很簡單的,當(dāng)然也可能包含一些個(gè)人的主觀因素在里面,不說廢話,如果你能看看下面這些來自官方文檔中Active Record介紹的代碼片段你就會變得很清晰。

where(["status" => Customer::STATUS_ACTIVE])
    ->orderBy("id")
    ->all();

    // 查找出id為1的customer(注意時(shí)一個(gè)):
    $customer = Customer::find()
        ->where(["id" => 1])
        ->one();

    // 返回 *active* customers的數(shù)量:
    $count = Customer::find()
        ->where(["status" => Customer::STATUS_ACTIVE])
        ->count();

    // 找到所有將id作為索引的customer:
    $customers = Customer::find()->indexBy("id")->all();
    // $customers array is indexed by customer IDs

    // 用查詢語句查找所有的customer:
        $sql = "SELECT * FROM customer";
        $customers = Customer::findBySql($sql)->all();

還有一個(gè)值得注意的地方是,在Yii1.1中使用的findByPk()find()在Yii2中有了新的替代者,

 1,
    "status" => Customer::STATUS_ACTIVE,
    ]);

    // 查找出id為1,或2,或3的所有customer:
    $customers = Customer::findAll([1, 2, 3]);

    // 找到狀態(tài)為 "deleted" 的customer:
    $customer = Customer::findAll([
    "status" => Customer::STATUS_DELETED,
    ]);
3.關(guān)聯(lián)(Relations)

在Yii2中,不再存在relations()函數(shù),而是使用getters的方式返回一個(gè)ActiveQuery對象

class Post extends yii/db/ActiveRecord{

   public function getComments()
   {
      return $this->hasMany("Comment", array("post_id" => "id"));
   }
}

但是關(guān)聯(lián)性還是可以使用類似$game->players,不過在Yii2你可以根據(jù)自己的情況來自定義你的查詢環(huán)境(查詢語句),比如:

$comments = $post->getComments()->andWhere("approve=1")->all();
高級特性:

但目前為止如果你覺Active Record還是沒法說服覺得它很強(qiáng)大,那么你可以好好看看這里。我會在這里羅列一些在Yii2中Active Record的(我覺得還不錯(cuò)的)細(xì)微的小改進(jìn),不過也是很貼心,因?yàn)樵陂_發(fā)過程中,你可能更喜歡將查詢到的數(shù)據(jù)存到一個(gè)數(shù)組里,這樣不僅會方便我們在Views中的輸出,也在一定程度上節(jié)約了內(nèi)存,于是,我在這里推薦你調(diào)用asArray()這個(gè)函數(shù)

$posts = Post::find()->asArray()->all();

說到內(nèi)存,上面的函數(shù)還是不能滿足你的需求?全部查出來還是太大了?你想限制一下內(nèi)存?OK,在Yii2中,你可以使用batch()函數(shù)來限制你的查詢請求;PS:batch就是批量的意思

// 一次查詢10個(gè)
foreach (Post::find()->batch(10) as $posts) {
    // $posts 是一個(gè)包含10個(gè)(有可能更少)Post對象的數(shù)組
}

// 查詢10個(gè)的同時(shí)一個(gè)一個(gè)輸出
foreach (Post::find()->each(10) as $post) {
    // $post 是一個(gè)Post對象
}

// 跟with一起使用
foreach (Post::find()->with("comments")->each() as $post) {
}

另外,Yii2中已經(jīng)自動(dòng)支持?jǐn)?shù)據(jù)庫中的事務(wù)管理(transactions),所以你完全不用擔(dān)心在使用數(shù)據(jù)查詢,更新的時(shí)候是否開啟了事務(wù)管理,Yii2已經(jīng)幫你做好了這一切。

寫在最后:

這些就是我在學(xué)習(xí)Yii2中總結(jié)的一些有關(guān)Active Record的改進(jìn),不得不說,Yii2的這些改進(jìn)使得我們的開發(fā)更友好,更優(yōu)雅了,僅是Active Record,就可以讓人用的很爽,所以,上手Yii2吧

原文來自:http://www.jellybool.com/post/yii2-active-record

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/20901.html

相關(guān)文章

  • Yii2MVC新特性

    摘要:而且現(xiàn)在的中,每個(gè)輸出變?yōu)榱朔祷兀拖裆厦娴囊粯樱悻F(xiàn)在可以完全返回一個(gè)字符串了,有沒有一絲絲的影子不過,你在的中只需認(rèn)識這些新特性基本就足矣,因?yàn)橐恍└镜臇|西跟是一樣的撒,完全不用怕,我是說如果你上手過的話。 這篇文章主要來看看在Yii2之中的MVC,當(dāng)然,最核心的思想還是跟Yii1.1一樣的,但是我今天是想來看看在Yii2里的MVC跟Yii1.1有什么不同,或者應(yīng)該直接說,Yi...

    sushi 評論0 收藏0
  • Yii修行之路 - Active Record 活動(dòng)記錄

    摘要:建立關(guān)聯(lián)關(guān)系后,通過可以獲取一個(gè)對象的數(shù)組,該數(shù)組代表當(dāng)前客戶對象的訂單集。定義關(guān)聯(lián)關(guān)系使用一個(gè)可以返回對象的方法,對象有關(guān)聯(lián)上下文的相關(guān)信息,因此可以只查詢關(guān)聯(lián)數(shù)據(jù)。基于表外鍵定義關(guān)聯(lián)關(guān)系是最佳方法。 簡介 Yii 在操作數(shù)據(jù)庫方面提供了一個(gè)十分強(qiáng)大的類庫來支撐整個(gè)框架業(yè)務(wù)的運(yùn)轉(zhuǎn),這就是 Active Record (活動(dòng)記錄,以下簡稱AR)。 基本概念 AR類提供了一個(gè)面向?qū)ο蟮慕?..

    HmyBmny 評論0 收藏0
  • Yii修行之路 - Extension 擴(kuò)展

    摘要:運(yùn)行來安裝指定的擴(kuò)展。這更便于用戶辨別是否是的擴(kuò)展。當(dāng)用戶運(yùn)行安裝一個(gè)擴(kuò)展時(shí),文件會被自動(dòng)更新使之包含新擴(kuò)展的信息。上述代碼表明該擴(kuò)展依賴于包。例如,上述的條目聲明將對應(yīng)于別名。為達(dá)到這個(gè)目的,你應(yīng)當(dāng)在公開發(fā)布前做測試。 簡述 擴(kuò)展是專門設(shè)計(jì)的在 Yii 應(yīng)用中隨時(shí)可拿來使用的, 并可重發(fā)布的軟件包。 基礎(chǔ) 例如, yiisoft/yii2-debug 擴(kuò)展在你的應(yīng)用的每個(gè)頁面底部添加...

    bovenson 評論0 收藏0
  • 現(xiàn)在寫 PHP,你應(yīng)該知道這些

    摘要:首先你應(yīng)該是在用以上的版本,如果版本在這之下,是時(shí)候該升級了。按照其官網(wǎng)的說法,這個(gè)組織的目的并不是告訴你你應(yīng)該怎么做,只是一些主流的框架之間相互協(xié)商和約定。和沒有出現(xiàn)在以上的列表中,是因?yàn)檫€沒有投票通過。不要被這些話所困擾。 首先你應(yīng)該是在用 PHP 5.3 以上的版本,如果 PHP 版本在這之下,是時(shí)候該升級了。我建議如果有條件,最好使用最新的版本。 你應(yīng)該看過 PHP The R...

    supernavy 評論0 收藏0
  • 優(yōu)雅、貼心、靠譜Node.js開發(fā)框架-AdonisJs

    摘要:關(guān)于作者程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事和前端開發(fā),使用和,端使用混合式開發(fā)。合適和夠用是最完美的追求。沒錯(cuò),是一款的后端框架。的靈感來自一個(gè)名為的框架。功能亮點(diǎn)是圍繞實(shí)際用例構(gòu)建的。讓您忘掉傳統(tǒng)查詢,擁抱優(yōu)雅的數(shù)據(jù)模型。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合...

    justCoding 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<