首先我是yii框架的新手。目前,我想编写一个函数来自动将入围提交用户分配给评估员,以便他们可以标记他们的提交配置文件。
例如
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.
依此类推,直到自动分配所有提交进行评估。.目前,我手动完成所有操作,方法是转到第一个评估员个人资料,然后将支持分配给他,然后转到第二个评估员,然后将提交分配给他,如果我有超过 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 中执行此操作,我正在尝试但对如何使用 im 在上面执行的数组以及如何自动将每个提交分配给 3 个评估器感到困惑。
查找AllByAttributes的resul是相关模型的集合,您应该通过迭代来引用这些模型对于 $applicant_list,您正确地执行此操作,然后您需要与 $evaluater_list 等效的东西(再次使用 foreach 或索引)
假设 $evaluator_list 在名为 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';
}
}
}
}