Правильно назначать разные задания разным пользователям - PullRequest
0 голосов
/ 25 октября 2018

Я строю систему одноранговой маркировки.Я хочу, чтобы система автоматически присваивала студентам 2 разных представления.Таким образом, каждому учащемуся могут быть назначены два разных представления для отметки, и два из этих представлений не принадлежат самому себе.Представление может быть назначено только 2 разных студентов.(Представление может быть назначено только два раза)

Я использую таблицу отправки для получения user_id.Модель AssignSubmission имеет много представлений.Представление принадлежит 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 раза.Я ТОЛЬКО хочу, чтобы одна заявка была назначена двум разным студентам.

Вот один из результатов.enter image description here Вот ожидаемый результат enter image description here

1 Ответ

0 голосов
/ 26 октября 2018

Я сам разбираюсь.Если учится 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();

   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...