【问题标题】:Assign different jobs to different users properly将不同的作业正确分配给不同的用户
【发布时间】:2018-10-24 23:09:00
【问题描述】:

我正在构建一个对等标记系统。我希望系统自动为学生分配 2 个不同的提交来标记。所以每个学生可以被分配两个不同的提交来标记,其中两个提交不属于他/她自己。一个提交只能分配给 2 个不同的学生。 (一次提交只能分配两次)

我使用提交表来获取 user_id。 Model AssignSubmission 有很多 Submission。提交属于AssignSubmission。提交表保存学生提交的提交。

public function handle(){
                    $students = Submission::all();
                    foreach ($students as $student) {

                        $jobs = Submission::all()->shuffle();

                        $i = 0;

                        foreach ($jobs as $job) {
                            if (($job->user_id !== $student->user_id) && ($i<2) ) {
                                $i++;
                                $newjob = New AssignSubmission;

                                $newjob->submission_id = $job->id;
                                $newjob->user_id = $student->user_id;
                                $newjob->save();

                               }

                        }
                    }
                }

我的问题是如何限制提交表单保存超过 2 次。我只希望将一个提交分配给两个不同的学生。

这是结果之一。 这是我期望的结果

【问题讨论】:

    标签: php mysql database laravel


    【解决方案1】:

    我自己解决这个问题。 如果有 15 个学生,那么就有 15 个作业,保证他们不会得到作业是很简单的。只要按顺序排列,第一位同学排第二位,第二位排第三位。 . ... 终于拿第一了。但是,这有局限性,我可以猜到我会得到谁。然后就变成了变量

    public function handle()
    {
      $students = Submission::orderBy('user_id','asc')->get(['user_id','id']);
      $word=$students->pluck('id')->toArray();
      $count_student =count($students);
      $random_num = mt_rand(1,$count_student-1);
      $word_num= 2;//How many jobs per person  
    
      $students->map(function($student,$k)use($word,$count_student,$random_num,$word_num){
      $arr=[];// save submission id
      for ($for_i=0;$for_i<$word_num;$for_i++){
      $index = $k+$random_num+$for_i;
      if(!isset($word[$index]))
      {
       $index-=$count_student;
      }
       $arr[]=$word[$index];
       }
       $student->homeworks = $arr;
    
       $newjob = New AssignSubmission;
       $newjob->submission_id = $student->homeworks[0];
       $newjob->user_id = $student->user_id;
       $newjob->save();
       $newjob = New AssignSubmission;
       $newjob->submission_id = $student->homeworks[1];
       $newjob->user_id = $student->user_id;
       $newjob->save();
    
       });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2013-11-09
      • 1970-01-01
      相关资源
      最近更新 更多