2015-10-29 3 views
2

Мне было интересно, может ли кто-нибудь помочь мне с написанием этого запроса с помощью CDbCriteria.Справка по SQL-запросу в структуре Yii (количество, группа)!

SELECT COUNT(*), vrste_odsustva_id FROM doob.calendar WHERE radnik_id=19 group by vrste_odsustva_id; 

Я судимый с этим, но он не перечислял мне ничего

$criteria= new CDbCriteria; 
    $criteria->select = '*, COUNT(*)'; // is also the default value so you can leave this line out 
    $criteria->condition = 'vrste_odsustva_id != NULL'; 
    $criteria->params = array(':radnik_id' => $radnik_id); 
    $criteria->group = 'vrste_odsustva_id'; 
    $odsustva=Calendar::model()->find($criteria); 

Я просто получаю пустой массив.

Примечание: Это Yii 1.1.6 версия

ответ

3

Вы можете использовать Yii querybuilder для этого:

$dbCommand = Yii::app()->db->createCommand(" 
       SELECT COUNT(*) as tot, vrste_odsustva_id FROM `calendar` WHERE radnik_id=19 GROUP BY `vrste_odsustva_id` 
      "); 
$data = $dbCommand->queryAll();//output 

Если вы хотите использовать CDbCriteria тогда:

$criteria = new CDbCriteria(); 
$criteria->select = 'count(*) AS model_attr, vrste_odsustva_id';//your model must have these attributes 
$criteria->group = 'vrste_odsustva_id'; 
$criteria->condition = 'radnik_id= 19'; 
$count = Calendar::model()->findAll($criteria); 
foreach ($count AS $data) { 
    echo "type: ".$data["vrste_odsustva_id"]." count: ".$data["model_attr"]."<br/>"; 
} 
+0

Спасибо, что работал, но я хотел бы использовать CDbCriteria вместо querybuider, но все равно спасибо, это помогло. – galabl

+0

@galabl проверить мой обновленный ответ. – Criesto

0
Users::find()->where(['role_id'=>'3'])->count(); 

You может использовать выше syntex для этого

0

Вы также можете использовать это:

$criteria = new CDbCriteria(); 
$criteria->select = 'COUNT(*) AS total'; 
$criteria->condition = 'vrste_odsustva_id != NULL AND radnik_id=:radnik_id'; 
$criteria->params = array(':radnik_id'=>$radnik_id); 
$criteria->group = 'vrste_odsustva_id'; 
$odsustva = Calendar::model()->findAll($criteria); 
Смежные вопросы