Yii中的relations數(shù)據(jù)關(guān)聯(lián)查詢及統(tǒng)計功能用法詳解
本文實例講述了Yii中的relations數(shù)據(jù)關(guān)聯(lián)查詢及統(tǒng)計功能用法。分享給大家供大家參考,具體如下:
關(guān)聯(lián)查詢,Yii 也支持所謂的統(tǒng)計查詢(或聚合查詢)。 它指的是檢索關(guān)聯(lián)對象的聚合信息,例如每個 post 的評論的數(shù)量,每個產(chǎn)品的平均等級等。 統(tǒng)計查詢只被 HAS_MANY(例如,一個 post 有很多評論) 或 MANY_MANY (例如,一個 post 屬于很多分類和一個 category 有很多 post) 關(guān)聯(lián)對象執(zhí)行。
執(zhí)行統(tǒng)計查詢非常類似于之前描述的關(guān)聯(lián)查詢。我們首先需要在 CActiveRecord 的 relations() 方法中聲明統(tǒng)計查詢。
class Post extends CActiveRecord { public function relations() { return array( 'commentCount'=>array(self::STAT, 'Comment', 'post_id'), 'categoryCount'=>array(self::STAT, 'Category', 'post_category(post_id,category_id)'), ); } }
關(guān)聯(lián)查詢命名空間
關(guān)聯(lián)查詢也可以和 命名空間一起執(zhí)行。有兩種形式。第一種形式,命名空間被應(yīng)用到主模型。第二種形式,命名空間被應(yīng)用到關(guān)聯(lián)模型。
下面的代碼展示了如何應(yīng)用命名空間到主模型。
這非常類似于非關(guān)聯(lián)的查詢。唯一的不同是我們在命名空間后使用了 with() 調(diào)用。 此查詢應(yīng)當(dāng)返回最近發(fā)布的 post和它們的評論。
下面的代碼展示了如何應(yīng)用命名空間到關(guān)聯(lián)模型。
上面的查詢將返回所有的 post 及它們審核后的評論。注意 comments 指的是關(guān)聯(lián)名字,而 recently 和 approved 指的是 在 Comment 模型類中聲明的命名空間。關(guān)聯(lián)名字和命名空間應(yīng)當(dāng)由冒號分隔。
命名空間也可以在 CActiveRecord::relations() 中聲明的關(guān)聯(lián)規(guī)則的 with 選項中指定。在下面的例子中, 若我們訪問 $user->posts,它將返回此post 的所有審核后的評論。
class User extends CActiveRecord { public function relations() { return array( 'posts'=>array(self::HAS_MANY, 'Post', 'author_id', 'with'=>'comments:approved'), ); } }
更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。
- yii框架結(jié)合charjs實現(xiàn)統(tǒng)計30天數(shù)據(jù)的方法
- yii 框架實現(xiàn)按天,月,年,自定義時間段統(tǒng)計數(shù)據(jù)的方法分析
- Yii統(tǒng)計不同類型郵箱數(shù)量的方法
- 解析yii數(shù)據(jù)庫的增刪查改
- Yii2 批量插入、更新數(shù)據(jù)實例
- Yii2框架數(shù)據(jù)庫簡單的增刪改查語法小結(jié)
- Yii2.0高級框架數(shù)據(jù)庫增刪改查的一些操作
- yii框架表單模型使用及以數(shù)組形式提交表單數(shù)據(jù)示例
- Yii實現(xiàn)MySQL多數(shù)據(jù)庫和讀寫分離實例分析
- Yii+MYSQL鎖表防止并發(fā)情況下重復(fù)數(shù)據(jù)的方法
- Yii實現(xiàn)多數(shù)據(jù)庫主從讀寫分離的方法
- yii框架結(jié)合charjs統(tǒng)計上一年與當(dāng)前年數(shù)據(jù)的方法示例
相關(guān)文章
PHP局部異常因子算法-Local Outlier Factor(LOF)算法的具體實現(xiàn)解析
這篇文章主要介紹了PHP局部異常因子算法-Local Outlier Factor(LOF)算法的具體實現(xiàn)解析,本文通過案例和文字解析一步步解釋了該項技術(shù)的實現(xiàn),以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07PHP類中的魔術(shù)方法(Magic Method)簡明總結(jié)
這篇文章主要介紹了PHP類中的魔術(shù)方法(Magic Method)簡明總結(jié),這些方法包括__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__toString()等,需要的朋友可以參考下2014-07-07PHP中關(guān)于php.ini參數(shù)優(yōu)化詳解
在本篇文章里小編給大家整理的是關(guān)于PHP引擎php.ini參數(shù)優(yōu)化的相關(guān)知識點,有興趣的朋友們可以學(xué)習(xí)下。2020-02-02php使用goto實現(xiàn)自動重啟swoole、reactphp、workerman服務(wù)的代碼
這篇文章主要介紹了php使用goto實現(xiàn)自動重啟swoole、reactphp、workerman服務(wù)的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04Laravel框架DB facade數(shù)據(jù)庫操作詳解
這篇文章主要介紹了Laravel框架DB facade數(shù)據(jù)庫操作,結(jié)合實例形式詳細(xì)分析了laravel數(shù)據(jù)庫基本創(chuàng)建、連接、增刪改查等操作技巧,需要的朋友可以參考下2019-12-12