【YII】常用代码积累

1. YII 使用原生SQL


1.1查询单个表
//查表得到 svn path
        $connection = Yii::app()->db;
        $sql = "SELECT * FROM code_coverage_project WHERE id = $code_id   LIMIT  1 ";
        $command = $connection->createCommand($sql);
        $rows = $command->queryAll();
        $count_rows = count($rows);
        //异常处理
        if (0 == $count_rows)
        {
            $msg = Yii::t('TOAST', 'No Result  For The Code Id!');
            header('Content-type: text/html; charset=UTF-8');
            echo json_encode(array('error' => 1, 'message' => $msg));
            exit;
        }
        $svn_path = $rows[0]['path']; //异常检测

1.2查询多个表

/*
         *@根据类名,查找对应版本的覆盖率
         * 
         *@$code_id   = 393;
         *@$version_1 = 119577;
         *@$version_2 = 120046;
         *@$classname = $array_filtered_calsses[0][0];
         *@print_r($classname);
         *@return;
         * 
         */
        $connection = Yii::app()->db;
        $sql_class_and_versions = "SELECT code_coverage.reversion_id,
                                          code_qulity_class_covery.id,
                                          code_qulity_class_covery.classname,
                                          code_qulity_class_covery.linecoverd,
                                          code_qulity_class_covery.linemissed,
                                          code_qulity_class_covery.coverdrate
                                  FROM
                                          code_qulity_class_covery
                                  LEFT JOIN code_coverage
                                  ON
                                         code_qulity_class_covery.code_covery_id = code_coverage.id
                                  WHERE
                                         code_coverage.code_project_id = $code_id AND
                                         code_coverage.reversion_id IN ($version_1, $version_2) AND
                                         code_qulity_class_covery.classname IN ($classname_for_sql_in); ";
        
        $command_for_calss_and_versions=$connection->createCommand($sql_class_and_versions);
        $rows_for_calss_and_versions = $command_for_calss_and_versions->queryAll();
        $count_rows = count($rows_for_calss_and_versions);
        
        if (0 == count($rows_for_calss_and_versions))
        {
            $msg = Yii::t('TOAST', "Sorry,no record matches in the database!");
            header('Content-type: text/html; charset=UTF-8');
            echo json_encode(array('error' => 1, 'message' => $msg));
            exit;
        }
2. 有关正则

 /*
         * 从变动的文件列表提取类名
         */ 
        $count = 0;
        $array_dot_java = array();
        $array_change_classname = array();
        $pattern_java = '/.*java$/';
        $pattern_for_calss ='/cn\/com.*\/[A-z]*/';
        
        foreach ($arr_change_files as $values)
        {
            if(preg_match($pattern_java,$values)) //过滤得到.java结尾的记录
            {
                $array_dot_java[] = $values;
                if(preg_match($pattern_for_calss,$values,$matchs)) //过滤得到类名
                {
                    $matchs[0]=preg_replace('/\//', '.', $matchs[0]); // 替换类名中的 “/"
                    $array_change_classname[] = $matchs;
                }
            }
        
        }
        
        if (0 == count($array_change_classname))
        {
            $msg = Yii::t('TOAST', "No class changes between the tow versions!");
            header('Content-type: text/html; charset=UTF-8');
            echo json_encode(array('error' => 1, 'message' => $msg));
            exit;
        }
        
        //根据package name 过滤 classname
        $array_filtered_calsses = array();
        $pattern_to_filter_class = "/.*$package_name.*/"; // cn.com.autofans.user.service.imp
        foreach($array_change_classname as $valus_to_filter_class)
        {
            if(preg_match($pattern_to_filter_class,$valus_to_filter_class[0]))
            {
                $array_filtered_calsses[] = $valus_to_filter_class;
            }
        
        }
        if (0 == count($array_filtered_calsses))
        {
            $msg = Yii::t('TOAST', "No classes matches the packet that post from pages!");
            header('Content-type: text/html; charset=UTF-8');
            echo json_encode(array('error' => 1, 'message' => $msg));
            exit;
        }
        
3. array()处理

  
        /*
         * 查询结果解析转换为 符合json的形式
         * $version_1 = 119577;
         * $version_2 = 120046;
         */
        
       $r_version_1 = "r".$version_1;
       $r_version_2 = "r".$version_2;
       $arr_json_classname = array();
       $arr_json_rate      = array();
       $arr_just_rate      = array();
       $arr_json_rate[$r_version_1] = array();
       $arr_json_rate[$r_version_2] = array();
       
       foreach($array_filtered_calsses as $values_switch_to_json)
       {
           $arr_json_classname [] = $values_switch_to_json[0];  //类名处理
           $arr_just_rate[$version_1] [$values_switch_to_json[0]] = 0;
           $arr_just_rate[$version_2] [$values_switch_to_json[0]] = 0;
       }
       
       foreach ($arr_json_classname as  $values_calssname)
       {
           foreach($rows_for_calss_and_versions as $values_switch_to_json_rate)
           {
               if($version_1 == $values_switch_to_json_rate['reversion_id'])
               {
                   if ($values_calssname == $values_switch_to_json_rate ['classname'])
                   {
                       $arr_just_rate [$version_1][$values_calssname] = $values_switch_to_json_rate['coverdrate'];
                   }
               }
               
               if($version_2 == $values_switch_to_json_rate['reversion_id'])
               {
                   if ($values_calssname == $values_switch_to_json_rate ['classname'])
                   {
                       $arr_just_rate [$version_2][$values_calssname] = $values_switch_to_json_rate['coverdrate'];
                   }
               }
           }
       }
       
       foreach ($arr_just_rate [$version_1] as $value_last)
       {
           $arr_version_1 []= floatval($value_last);
       }
       foreach ($arr_just_rate [$version_2] as $value_last)
       {
           $arr_version_2 []= floatval($value_last);
       }
       
       foreach($arr_json_classname as $value_to_cut_classname)
       {
           $pattern = "/".$package_name."./";
           $replacement = '';
           $temp_classname = preg_replace($pattern,$replacement,$value_to_cut_classname);
           $array_just_classname [] = $temp_classname;
       }
       
       $data_temp = array($r_version_1 => $arr_version_1,$r_version_2 =>$arr_version_2 );
       $xaxis = $array_just_classname;
       $data = $data_temp;
//     	$xaxis = array(  'class A', 'class B', 'class C', 'Class D', 'Class E' );
//     	$data = array( 'r12345'=>array(48.9, 38.8, 39.3, 41.4, 47.0), 'r67890'=>array(62.4, 53.2, 54.5, 59.7, 72.6));
    	echo json_encode(array('xaxis'=>$xaxis, 'coverdata'=>$data));




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值