首先我是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.
依此类推,直到所有提交的内容都被自动分配。目前我通过转到第一个评估者个人资料手动完成所有操作,然后为他分配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 :(得分:0)
findAllByAttributes的结果是相关模型的集合,您应该通过迭代引用这些模型 对于$ applicant_list你做得对,然后你需要相当于$ evaluater_list的东西(再次使用foreach或索引)
假设$ evaluator_list包含名为id的字段中的eval_id,你可以随机执行,例如:with 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';
}
}
}
}