Ich bin neu in PHP MySql und eine Menge Antwort in dieser Frage, aber ich habe immer noch einen Fehler in diesem. Also versuche ich, mein Array zu loopen und ein multidimensionales assoziatives Array zu erstellen. die die ID der Kategorie, Unterkategorie, Segment- und Frage TabellenErstellen multidimensionalen assoziativen Array in PHP mysql
Und in der Kategorie
Ich habe evaluation_details, Kategorie, Segment und Frage Tabellen In evaluation_details, ich habe ich habe Spalte is_cat und sein Datentyp ist winzig int Der Wert ist entweder 0 oder 1, was 1 bedeutet, wenn die angegebene Kategorie die Hauptkategorie ist, und 0, wenn es sich um eine Unterkategorie handelt. Daher muss ich ein solches Array erstellen.
Innerhalb der Kategorie eine mehrere Unterkategorien und jede Unterkategorie hat eine Frage. Und jede Kategorie kann nach Segmenten gruppieren.
array:2 [
0 => array:4 [
"id" => 2
"title" => "second evaluation form"
"emp_position" => "System Architecture"
"first_segment_name" => array:2 [
0 => {
+"category_name" => array 2 [
0 => {
+"subcategory" => sub_1
+"question" => question_1
},
1 => {
+"subcategory" => sub_2
+"question" => question_2
}
]
}
1 => {
+"category_name" => array 2 [
0 => {
+"subcategory" => sub_3
+"question" => question_3
},
1 => {
+"subcategory" => sub_4
+"question" => question_4
}
]
}
]
"second_segment_name" => array:2 [
0 => {
+"category_name" => array 3 [
0 => {
+"subcategory" => sub_5
+"question" => question_5
},
1 => {
+"subcategory" => sub_6
+"question" => question_6
}
2 => {
+"subcategory" => sub_7
+"question" => question_7
}
]
}
]
]
]
Und das ist, was ich versuche
public function getEvaluation($data){
$query = DB::table(
DB::raw("(
SELECT
e.id,
e.title,
p.name position,
s.name segment
FROM
evaluation_details e_d
JOIN evaluation e ON e_d.evaluation_id = e.id
JOIN segment s ON e_d.segment_id = s.id
JOIN position p ON e.position_id = p.id
WHERE e.position_id = 2
ORDER BY segment
) As `a`
")
)->get()->toArray();
$query = json_decode(json_encode($query), true);
foreach ($query as $index => $data) {
$first_array[$index]['id'] = $data['id'];
$first_array[$index]['title'] = $data['title'];
$first_array[$index]['emp_position'] = $data['position'];
$first_array[$index]['segments'] = DB::table('evaluation_details AS e_d')
->select('c.name AS category')
->join('category AS c', 'e_d.category_id', 'c.id')
->join('evaluation As e', 'e_d.evaluation_id', '=', 'e.id')
->join('segment AS s', 'e_d.segment_id', 's.id')
->where('e.position_id', '=', '2')
->get()->toArray();
}
echo '<pre>';
dd($first_array);exit;
}
* zu tun, aber es gibt mir anderes Ergebnis ich in Kategorie eine andere Anordnung haben müssen *
array:2 [
0 => array:4 [
"id" => 2
"title" => "first evaluation form"
"emp_position" => "System Architecture"
"segments" => array:2 [
0 => {#497
+"category": "test"
}
1 => {#498
+"category": "Quality & Dependibility"
}
]
]
]
I hoffe, dass mir jemand dabei helfen kann.
Also, was ist das Problem Sie konfrontiert sind? –
Ich bin verwirrt. Was ist der Code, den du gepostet hast? Soll das in ein mehrdimensionales Array konvertiert werden? Oder möchten Sie ein multidimensionales Array erstellen? – Bluetree
@MayankPandeyz Ich möchte ein Array wie das –