2013-04-04 47 views
0

假設我想爲CGridView提供CActiveDataProvider。我需要將SUM(invitesCount) AS invites放入提供程序結果中。如何檢索它?我想我不能只用$dataProvider->invitesYii - 使用MySQL AS子句域

回答

2

您需要指定以下在relationinvites

'invites '=>array(self::BELONGS_TO, 'CampaignFund', 'campaign_id', 'select' => 'SUM(invitesCount)'), 

並使用您的標準這種關係。

+0

謝謝。每當我們需要某個領域時,添加realtions是否好主意?這是否有效?我在注意到你的答案之前注意到了幾秒鐘,我可以定義新的公共屬性並使用'AS' pointint來選擇這些屬性。不確定哪個方式更好? – Joe 2013-04-04 09:04:27

1

其他幾個選項:

  1. 使用CStatRelation

    invitesCount=>array(self::STAT,'Invites','foreign_key_field'); 
    
  2. 添加公共財產可以工作。但是,只有在您更改默認查找查詢以包含此新條件時纔會設置該字段。這可以通過覆蓋defaultScope()或創建新的scope並在需要invitesCount時使用它來完成。

  3. 另一種選擇是從所需查詢創建數據庫視圖,並從該數據庫視圖創建新模型。

+0

其實你不需要定義新的範圍。您可以簡單地將'search'方法更改爲接受'CDbCriteria'對象作爲默認值爲null的參數,然後將默認條件與參數中的條件合併。 – Joe 2013-04-04 11:45:37