2016-04-26 7 views
0

Zunächst einmal im neuen yii Framework .. Derzeit möchte ich eine Funktion schreiben, um die Short List gelisteten Einreichungen Benutzer zu Evaluatoren automatisch zuweisen, so dass sie ihre Einreichungen Profile markieren können.Holen Sie sich Daten aus dem Array und ordnen Sie sie in Yii Php

Zum Beispiel

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

Ich mag die Reihe von Gesamt Vorlage Benutzern bekommen, und auch insgesamt Evaluatoren .. dann mag ich Einreichungen sie automatisch zuweisen, Unten finden Sie etwas, das ich will.

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. 

und so weiter, bis alle Eingaben automatisch zugewiesen ausgewertet werden .. Zur Zeit alles im, indem Sie zum ersten Evaluator Profil manuell zu tun, dann sumission ihn zuweisen, dann auf den zweiten Auswerter geht und dann zu ihm zuweisen Unterwerfung, Es wird viel Zeit in Anspruch nehmen, wenn ich mehr als 50 Evaluatoren und mehr als 200 Einreichungen habe, die ich automatisieren möchte.

neu Im so nicht sicher Yü, wie das alles zu tun .. hier ist mein Code für neue Funktion ..

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

    } 
} 

Im nicht wirklich sicher, wie dies in yii zu tun, im Versuch, aber verwechseln mit wie man Arrays verwendet, die oben ausgeführt werden, und wie man jede Einreichung automatisch 3 Evaluatoren zuweist.

Antwort

0

Die Resul eines findAllByAttributes ist eine Sammlung von verwandten Modelle die Sie für diese Modelle durch Iteration für $ applicant_list man es richtig macht, dann müssen Sie Somethings Äquivalent für $ evaluater_list (Verwendung foreach wieder oder Index)

beziehen sollte

die $ evaluator_list vorausgesetzt containt die eval_id in einem ID-Feld namens yourandom zB tun können: mit array_rand diese Weise

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

, aber ich möchte eine Vorlage 3 mal bewertet werden, wie das tun .. eine Unterwerfung bedeutet sollte 3 Evaluatoren zugewiesen werden ... –

+0

Ich habe die Antwort aktualisiert c .. Hoffnung ist nützlich – scaisEdge

Verwandte Themen