Php 如何正确存储在答案表中?
参与者数组具有以下结构:Php 如何正确存储在答案表中?,php,Php,参与者数组具有以下结构: array:1 [▼ "participant" => array:2 [▼ 1 => array:5 [▼ "name" => "John" "surname" => "W" "answer" => array:6 [▼ 0 => "text answer" 1 => "long answer" 2 => "check1"
array:1 [▼
"participant" => array:2 [▼
1 => array:5 [▼
"name" => "John"
"surname" => "W"
"answer" => array:6 [▼
0 => "text answer"
1 => "long answer"
2 => "check1"
3 => "rb1"
4 => "selectmenu1"
5 => "img.jpg"
]
"question_id" => array:6 [▼
0 => "1"
1 => "2"
2 => "3"
3 => "4"
4 => "5"
5 => "6"
]
"rtypes" => "1"
]
2 => array:3 [▼
"name" => "Jake"
"surname" => "K"
"rtypes" => "4"
]
]
]
数组的每个索引都有一个参与者的数据,该参与者正在confernece中注册。在这种情况下,数组索引“1”中的参与者名为“John”,姓为“w”,并且正在id为“1”的注册类型中注册。此注册类型有6个与之关联的自定义问题,因此在RegistrationIn表单中,正在对此自定义问题进行注册的用户的答案和答案存储在“答案”数组中
数组索引“2”中的参与者没有答案,因为他正在id为4的注册类型中注册,此id为4的注册类型没有任何关联的自定义问题,因此在注册表单中,只收集了此参与者的姓名,此参与者没有答案
疑问:如何在答案表中存储每个参与者的答案
现在我想在参与者表中存储每个参与者的信息,并在答案表中存储每个参与者的答案。存储在参与者表中的代码工作正常
但是存储每个答案都不起作用,因为答案和问题\u id是数组。您知道如何在答案表中正确存储每个答案和问题id吗
foreach ($participants['participant'] as $k => $participant) {
$name = $participant['name'];
$surname = $participant['surname'];
$participant_result = Participant::create([
'name' => $name,
'surname' => $surname,
'registration_id' => $registration->id,
'registration_type_id' => $participant['rtypes']
]);
//var_dump($participant['question_id']);
// the error is here
// store each answer of each participant that has answers
if (isset($participant['question_id'])) {
$answer = Answer::create([
'question_id' => $participant['question_id'],
'participant_id' => $participant_result->id,
'answer' => $participant['answer'],
]);
}
}
我认为你需要为每个答案创建一个答案。我只在代码中添加了一个循环和一些数组索引
if (isset($participant['question_id'])) {
for ($i=0; $i < count($participant["question_id"]); $i++) {
$answer = Answer::create([
'question_id' => $participant['question_id'][$i],
'participant_id' => $participant_result->id,
'answer' => $participant['answer'][$i]
]);
}
}
if(isset($participant['question_id'])){
对于($i=0;$i$participant['question\u id'][$i],
'participant\u id'=>$participant\u result->id,
“答案”=>$participant['answer'][$i]
]);
}
}
尝试创建一个虚拟变量,您知道它是一个数组,并将其传入以检查它是否为其他变量。但是,在将来,使用PHP对象会更好,这样的工作会更简单。您不需要添加六个答案吗?是的,需要在答案数组中插入每个答案。谢谢,由于答案表中没有正确存储答案,我更新了问题以显示问题。此代码将为每个答案创建一个数据库行。我不同意将六个答案塞进一行,因为这违反了规则,并且会使基于这些数据的查询变得极其困难。