从数组中获取数据并在 Yii Php 中分配它们


Get data from array and assign them in Yii Php

首先我是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';
                }
            }
        }
    }