繁体   English   中英

如何从数组中获取每个 question_id 和 answer?

[英]How to get each question_id and answer from the array?

如果用户在会议中进行注册,并且正在注册 1 名 ID 为“1”(Jake K)的注册类型参与者和 1 ID 为“4”(John W)的注册类型参与者,则请求表单数据有这 3 个数组:

"name" => array:2 [▼
  1 => array:1 [▼
    1 => "Jake"
  ]
  4 => array:1 [▼
    1 => "John"
  ]
]
"surname" => array:2 [▼
  1 => array:1 [▼
    1 => "K"
  ]
  4 => array:1 [▼
    1 => "W"
  ]
]
"answer" => array:1 [▼
  1 => array:1 [▼   
    1 => array:2 [▼   // answers answered for the registration_type_id 1
      1 => "answer1"
      2 => "answer2"
    ]
  ]
]

有必要使用此数组的信息插入participantsanswers表中。 它在participants表中正确插入但对于answers表不起作用:

 foreach ($request->all()['name'] as $key => $nameArray) {
        foreach ($nameArray as $nameKey => $name) {
            // this is working
            $participant_result = Participant::create([
                'name'                 => $name,
                'surname'              => $request['surname'][$key][$nameKey],
                'registration_id' => $registration->id,
                'registration_type_id' => $key
            ]);


            // save answer to Database if exist
            // this is not working
            $answer = Answer::create([
                'question_id' => $request['answer'][$key], // the issue is here
                'participant_id' => $participant_result->id,
                'answer' => $request['answer'][$key][$nameKey], // and here
            ]);
        }
    }

问题是因为有必要插入到answers表的question_idanswer列中。 但是这个值没有从带有“ $request['answer'][$key] ”和“ $request['answer'][$key][$nameKey] ”的数组中正确返回。

您知道如何从数组中正确获取问题 ID 和答案吗?

在上面的数组示例中,“answer1”的问题 id 为 1,“answer2”的 id 为 2。

  "answer" => array:1 [▼
    1 => array:1 [▼
      1 => array:2 [▼
        1 => "answer1"
        2 => "answer2"
      ]
    ]

形式:

<form method="post"
      action="https://proj.test/conference/1/conf-test/registration/storeRegistration">
    <h6> Participant - 1 - general</h6>

    <div class="form-group">
      <label for="namegeneral_1">Name</label>
      <input type="text" required  id="namegeneral_1" name="name[1][1]" class="form-control" value="">
    </div>

    <div class="form-group">
      <label for="surnamegeneral_1">Surname</label>
      <input type="text"  id="surnamegeneral_1" class="form-control" name=" surname[1][1]" value="">
    </div>

    <div class="form-group">
      <label for="participant_question">Question 1</label>
      <input type='text' name='answer[1][1][1]' class='form-control' required>
      <input type="hidden" name="question_required[1][1]" value="1">
    </div>

    <div class="form-group">
      <label for="participant_question">Question 2</label>
      <textarea name='answer[1][1][2]' class='form-control' rows='3' required></textarea>
      <input type="hidden" name="question_required[1][2]" value="1">
    </div>

    <h6> Participant - 1 - plus</h6>

    <div class="form-group">
      <label for="nameplus_1">Name</label>
      <input type="text" required  id="rnameplus_1" name="rname[4][1]" class="form-control" value="">
    </div>

    <div class="form-group">
      <label for="surnameplus_1">Surname</label>
      <input type="text"  id="rsurnameplus_1" class="form-control" name=" rsurname[4][1]" value="">
    </div>

    <input type="submit" class="btn btn-primary" value="Register"/>
</form>

第一:在循环中,您有多个名字,但 answer 有一个键 ( 1 )。 在第二次运行时,您有$key == 4 ,但在$request['answer'] 也许在第一个循环中你应该有两个循环? 一种用于注册参与者,一种用于注册答案? 如果两个答案都注册了,用$participantResult构建数组,并为每个答案注册count($participantResult)答案:O 如果没有,只记住第一个注册参与者的 ID 并保存答案。

请告诉我$request['answer']是如何工作的? 什么是$request['answer'][1]什么是$request['answer'][1][1]

其次$request['answer'][$key][$nameKey]在这种情况下是两个元素的数组。 如果 Answer::create 知道它 - 没问题;)

编辑

这是正确的解决方案吗?

<?php
$aPID = [];

foreach ($request->all()['name'] as $key => $nameArray) {
    foreach ($nameArray as $nameKey => $name) {
        $aPID[$key] = Participant::create([
            'name'                 => $name,
            'surname'              => $request['surname'][$key][$nameKey],
            'registration_id' => $registration->id,
            'registration_type_id' => $key
        ]);
    }
}

foreach($request['answer'] as $pid => $answersArray) {
    foreach($answersArray as $questionId => $answer) {
        $answer = Answer::create([
            'question_id' => $questionId,
            'participant_id' => $aPID[$pid],
            'answer' => $answer,
        ]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM