Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii框架中的SQL查询帮助(计数、分组依据)!_Php_Mysql_Yii - Fatal编程技术网

Php Yii框架中的SQL查询帮助(计数、分组依据)!

Php Yii框架中的SQL查询帮助(计数、分组依据)!,php,mysql,yii,Php,Mysql,Yii,我想知道是否有人能帮我用CDbCriteria编写这个查询 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

我想知道是否有人能帮我用CDbCriteria编写这个查询

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版本

您可以使用Yii来实现:

$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/>";
}
$criteria=新的CDbCriteria();
$criteria->select='count(*)AS model_attr,vrste_odsustva_id'//您的模型必须具有这些属性
$criteria->group='vrste_odsustva_id';
$criteria->condition='radnik_id=19';
$count=Calendar::model()->findAll($criteria);
foreach($data计为$data){
echo“类型:.$data[“vrste_odsustva_id”]。”计数:.$data[“model_attr”]。“
”; }
您可以使用以上syntex进行此操作

您也可以使用此功能:

$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);

谢谢,这很有效,但我想使用CDbCriteria而不是QueryBuilder,但无论如何,谢谢,它很有帮助。
$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);