2016-04-26 4 views
0

まず、yiiフレームワークの新機能です。現在、私は短いリストの投稿ユーザーを評価者に自動的に割り当てる機能を書いて、投稿プロファイルをマークすることができます。その後、私は以下に、それらに自動的に提出を割り当てたい..私は総投稿ユーザーの配列、また総評価者を取得したい配列からデータを取得し、Yii Phpで割り当てる

Total submission users: 20 
Total evaluators: 11 
Evaluator per submission: 3 

例えば

は、私が欲しいものです。

submission 1 
    Assigned to evaluator 1, evaluator 2, evaluator 3. 

submission 2 
    Assigned to evaluator 4, evaluator 5, evaluator 6. 

submission 3 
    Assigned to evaluator 7, evaluator 8, evaluator 9. 

submission 4 
    Assigned to evaluator 10, evaluator 11, evaluator 1. 

submission 5 
    Assigned to evaluator 2, evaluator 3, evaluator 4. 
. 
. 

. 
submission 20 
    Assigned to evaluator 3, evaluator 4, evaluator 5. 

というように、すべての応募作品が評価されるまでが自動的に割り当てられます。..現在、第二評価に行き、その後、彼に服従を割り当て、その後、彼にsumissionを割り当て、その後、最初の評価者のプロフィールに行くことによって、手動ですべてをやっイム、私が50人以上の評価者と200人以上の提出を自動化したいのであれば、多くの時間がかかります。

イムすべてのことを行うにはどのようにわからないのYiiする新しい..ここに新しい機能のための私のコードは..です

public function actionAutoAssign(){ 
    $evaluator_list = ApplicantsController::model()->findAllByAttributes(array('user_type'=>'evaluator')); 
    $applicants_list = ApplicantsController::model()->findAllByAttributes(array('appl_status'=>'Short listed')); 
    $award_id = Awards::model()->actionCurrentAward(); 
    $status = ''; 

    $model = new Evaluation(); 
    $model->setScenario('evalassign'); 
    foreach($applicants_list as $key=>$val){ 
     $model->app_id = $val; 
     $model->eval_id = $evaluator_list; 
     $model->assign_date = date('Y-m-d H:i:s'); 
     $model->award_id = $award_id; 
     if($model->validate()){ 
      $model2 = null; 

      $model2 = HmcApplicants::model()->find('id=:applId',array('applId'=>$val)); 
      $model2->appl_status = 'Under Evaluation Now'; 
      $model2->update($val); 

      if($model->save(FALSE)){ 
       $status = 'ok'; 
      } 
     } 

    } 
} 

イムYiiの中でこれを行う方法を本当にわからない、イムしようとしたが混同上記の作業を行う配列の使い方、および各サブミッションを3人の評価者に自動的に割り当てる方法について説明します。

答えて

0

findAllByAttributesのresulはあなたがあなたが$ evaluater_list(使用再びのforeachまたはインデックス)と同等の代を必要とする右のそれを行うapplicant_list $のために反復 により、これらのモデルを参照する必要があり、関連するモデルのコレクションです

は、$ evaluator_listあなたはランダムなどを行うことができ、IDというフィールドでeval_idをcontaint仮定:array_randこのよう

public function actionAutoAssign(){ 
     $evaluator_list = ApplicantsController::model()->findAllByAttributes(array('user_type'=>'evaluator')); 
     $applicants_list = ApplicantsController::model()->findAllByAttributes(array('appl_status'=>'Short listed')); 
     $award_id = Awards::model()->actionCurrentAward(); 
     $status = ''; 

     $model = new Evaluation(); 
     $model->setScenario('evalassign'); 
     foreach($applicants_list as $key=>$val){ 
      $model->app_id = $val; 
      for ($cnt = 0; $cnt<2; $cnt++){  
       $model->eval_id = array_rand($evaluator_list)->id ; 
      } 
      $model->assign_date = date('Y-m-d H:i:s'); 
      $model->award_id = $award_id; 
      if($model->validate()){ 
       $model2 = null; 

       $model2 = HmcApplicants::model()->find('id=:applId',array('applId'=>$val)); 
       $model2->appl_status = 'Under Evaluation Now'; 
       $model2->update($val); 

       if($model->save(FALSE)){ 
        $status = 'ok'; 
       } 
      } 

     } 
    } 
+0

でなく、私は1つの提出はそれを行うだろうか、3回、評価したい。.. 1提出を意味します? 3人の評価者に割り当てられるべきです... –

+0

私は答えを更新しました。 ..希望は便利です – scaisEdge

関連する問題