2016-04-26 61 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多個我想要自動化的意見書,則需要很長時間。

進出口新的警予所以不知道怎麼做的一切..這是我的新的功能代碼..

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'; 
      } 
     } 

    } 
} 

林真的不知道如何在警予做到這一點,我嘗試但混淆如何使用上面提到的數組,以及如何自動將每個提交分配給3個評估者。

回答

0

一個findAllByAttributes的resul是通過迭代 爲$相關車型的你應該參考這些模式的集合applicant_list你這樣做是正確的,那麼你需要出頭(再次使用的foreach或指數)爲$ evaluater_list相當於

假設$ evaluator_list containt在字段名爲id的eval_id你可以做隨機如:用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

但我想一個提交評估3次,怎麼會做..手段之一提交應分配給3位評估人員...... –

+0

我已更新答案c希望是有用的 – scaisEdge

相關問題