2016-05-30 1 views
0

は、私はすべての毎日退会ユーザーを示している。このコードは、...yiiのcdbCriteriaでSUMを使用するには?

public function getdailyUnSubs($modelName,$op){ 

    $currentDate = date('Ymd'); 
    $criteria = new CDbCriteria; 
    $criteria->select = 'app_unsubs,sms_unsubs'; 

    $criteria->order = 'date DESC'; 
    $criteria->limit = 1; 
    $criteria->offset = 0; 
    $Subscriber = $modelName::model()->find($criteria); 

    $totalunSubs = $Subscriber['app_unsubs']+$Subscriber['sms_unsubs']; 

    return $totalunSubs; 
} 

を持っていますが、今私は、これまでのところ、すべて解除のユーザーを取得したいです。私はすべての非購読ユーザーの合計が欲しい。

ここは私のコードですが、動作しません。

public function getTotalUnSubs($modelName,$op){ 


    $criteria = new CDbCriteria; 
    $criteria->select ='sum(app_unsubs) as appunsubs, sum(sms_unsubs) as smsunsubs'; 

    $Subscriber = $modelName::model()->find($criteria); 

    $totalunSubs = $Subscriber['appunsubs']+$Subscriber['smsunsubs']; 

    return $totalunSubs; 
} 

appunsubssmsunsubsが定義されていないと言っています。

は私が

$criteria->select ='(sum(app_unsubs)+ sum(sms_unsubs)) as totalunsubs';

$totalunSubs = $Subscriber['totalunsubs'];

にコードを変更してもそれはまだtotalunsubsが定義されていないと言います。

答えて

2

smsunsubsは、$modelNameモデルクラスにフィールドがないため、定義されていません。データをフェッチするには、条件に基づいてクエリを作成し、Yii::app()->db->createCommand($sql)->queryRow()を使用してこのクエリを実行します。私はあなたがあなたのクエリにではグループを設定することがあると思う

public function getTotalUnSubs($modelName,$op) 
{ 
    $criteria = new CDbCriteria; 
    $criteria->select ='sum(app_unsubs) as appunsubs, sum(sms_unsubs) as smsunsubs'; 

    //creating proper SQL 
    $sql = Yii::app()->db->commandBuilder->createFindCommand($modelName, $criteria)->getText(); 

    //fetching data based on created SQL stored in $sql variable 
    $Subscriber = Yii::app()->db->createCommand($sql)->queryRow(); 

    $totalunSubs = $Subscriber['appunsubs']+$Subscriber['smsunsubs']; 

    return $totalunSubs; 
} 
+0

コードを使用した後、エラーが表示され、 'SubUsers'が存在しないと言っています。それは私のテーブルの名前です。エラー: '$ sql = Yii :: app() - > db-> commandBuilder-> createFindCommand($ modelName、$ criteria) - > getText();' –

+0

このコードで返されたものを確認してください: 'Yii: :app() - > db-> getSchema() - > getTable( 'SubUsers') '。 'CDbTableSchema'オブジェクトを返す場合、' $ modelName'変数の代わりにエラーがある行に渡してください。 – aslawin

+0

このコードはどこに置くべきですか? '$ subUsersTableSchema = Yii :: app() - > db-> getSchema(' YU :: app() - > db-> getSchema() - > getTable( 'SubUsers') ' –

1

:このコードをチェックしてください。

コードは次のようになりました。

public function getTotalUnSubs($modelName,$op){ 


    $criteria = new CDbCriteria; 
    $criteria->select ='sum(app_unsubs) as appunsubs, sum(sms_unsubs) as smsunsubs'; 
    $criteria->group='table primary key'; 

    $Subscriber = $modelName::model()->find($criteria); 

    $totalunSubs = $Subscriber['appunsubs']+$Subscriber['smsunsubs']; 

    return $totalunSubs; 
} 
+0

私のテーブルにプライマリキーがありません。それは必要ない –

関連する問題