0

我正在使用 YII 框架

$job_status = Yii::app()->db->createCommand()
            ->select('count(*) as total_count, Image_status')
            ->from('AllDetail')
            ->where("JobID=:job_id",array(':job_id'=>$job_id))
            ->group('Image_status')
            ->queryAll();
$status_key = array();
$images = array();
foreach($job_status as $job){
    $imgstate = array_push($status_key,CompClass::statusMaster($job['Image_status']));
    $tot_img = array_push($images,$job['total_count']);
}

Status Master 引用了我的组件类中的一个函数

其中有

public static function statusMaster($status_code)
{
    switch($status_code)
    {
        case 0:
        $alias = 'QUEUE';
        break;
            case 1:
        $alias = 'PROCESSING';
        break;
            case 2:
        $alias = 'COMPLETED';
        break;

    }
            return $alias;
        }

这是我的看法

<strong>Queued: <?php echo $job_status['QUEUE']; ?></strong><br />
<strong>Processing: <?php echo $job_status['PROCESSING']; ?></strong><br />
<strong>Completed: <?php echo $job_status['COMPLETED']; ?></strong><br />

如果上面的脚本没有任何 status_code(即),则会引发错误

如果数据库中的图像有status_code 0 and 1 but not 2我得到undefined index completed。相反,它应该显示为0.

我是否可以使用任何其他有效方法的异常处理

4

2 回答 2

0

您尝试根据其代表数字设置状态,试试这个:

<strong>Queued: <?php echo CompClass::statusMaster($job['Image_status']); ?></strong><br />

对于未定义的使用 isset() 一个 !empty() 来确保您正在处理有效的变量。

就这样!

于 2013-10-07T11:57:41.153 回答
0

为查询中的每个“image_status”设置一个值,然后保存对“statusMaster($status_code)”函数的调用。然后,您在 foreach($job_status) 内的 $job 对象中有正确的值。

$job_status = Yii::app()->db->createCommand()
            ->select('count(*) as total_count, CASE Image_status
                                                    WHEN 0 THEN "QUEUE"
                                                    WHEN 1 THEN "PROCESSING"
                                                    WHEN 2 THEN "COMPLETED"
                                                    ELSE "DEFOULT VALUE"
                                                    END as Image_status ')
            ->from('AllDetail')
            ->where("JobID=:job_id",array(':job_id'=>$job_id))
            ->group('Image_status')
            ->queryAll();

鉴于:_

<strong>Queued: <?php echo isset($job_status['QUEUE'])?  $job_status['QUEUE'] : ''; ?></strong><br />
<strong>Processing: <?php isset($job_status['PROCESSING'])?  $job_status['PROCESSING'] : ''; ?></strong><br />
<strong>Completed: <?php isset($job_status['COMPLETED'])?  $job_status['COMPLETED'] : '';?></strong><br />
于 2013-10-07T11:50:18.750 回答