2013-05-14 66 views
2

我想把這個查詢轉換成警予如何轉換COUNT(*)和組通過查詢警予,並從它

SELECT count(*) AS cnt, date(dt) FROM tbl_log where status=2 GROUP BY date(dt) 

,並獲取從數據中獲取數據。我試試這個命令(dt是時間字段):

$criteria = new CDbCriteria(); 
$criteria->select = 'count(*) as cnt, date(dt)'; 
$criteria->group = 'date(dt)'; 
$criteria->condition = 'status= 2'; 
$visit_per_day = $this->findAll($criteria); 

但沒有數據將獲取!wath我可以做什麼來獲取數據?

回答

4

也許你看不到任何數據,因爲您需要將數據分配給不存在的模型屬性。

$criteria = new CDbCriteria(); 
$criteria->select = 'count(*) AS cnt, date(dt) AS dateVar'; 
$criteria->group = 'date(dt)'; 
$criteria->condition = 'status= 2'; 
$visit_per_day = $this->findAll($criteria); 

這意味着您的模型必須具有屬性cnt和dateVar才能顯示數據。如果您需要自定義查詢,請檢查Hearaman的答案。

+0

如何獲得CNT值?我想這樣$ visit_per_day-> cnt。但不工作 – 2015-05-11 09:52:36

0

如果使用Yii2並具有基於表tbl_log一個模型,可以做到在這樣的模型風格:

$status = 2; 
$result = Model::find() 
    ->select('count(*) as cnt, date(dt)') 
    ->groupBy('date(dt)') 
    ->where('status = :status') 
    ->params([':status' => $status ]) 
    ->all();