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

クエリで「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 に答える