Ich habe auf dieses Problem seit einer Weile, jetzt habe einen manuellen Prozess, den ich tun, um die Daten in das Array-Format, das ich will, aber ich finde es zeitaufwendig und sehr einfach zu tun Unterbrechung.SQL Joined Daten in mehrdimensionalen Array
Also versuche ich die folgende Aufgabe so gut wie möglich zu automatisieren. Als Beispiel habe ich zwei Tabellen in meiner Datenbank, eine users
Tabelle und eine addresses
Tabelle.
Die users
Tabelle hat eine Eins-zu-viele-Beziehung mit der Tabelle addresses
.
ich nach unten ziehe meine Daten eine Abfrage unter Verwendung der Tabellen zu verknüpfen und ziehen Sie jede Zeile, zB Abfrage:
SELECT users.name AS 'users.name',
users.age AS 'users.age',
addresses.street AS 'users.addresses.street',
addresses.suburb AS 'users.addresses.suburb'
JOIN addresses ON
users.user_id = addresses.user_id
FROM users;
Wenn ich 2 Benutzer habe eines mit 2-Adressen und einen mit 3 sollte es 5 Zeilen zurückgeben wie folgt:
| benutzer.name | users.age | users.addresses.street | users.addressesvorwahl |
Joshua | 28 | 3 Gefälschte St Sydney
Joshua | 28 | 16 neue St | Sydney
Joshua | 28 | 140 Apfel St Sydney
Tim | 34 | 18 John St Sydney
Tim | 34 | 143 Clark St |
Sydney
Fetching die Ergebnisse als assoziatives Array würde die Ergebnisse in einem Array wie die Rückkehr folgenden:
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '3 Fake St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '16 New St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Joshua',
'users.age' => 28,
'users.addresses.street' => '140 Apple St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Tim',
'users.age' => 34,
'users.addresses.street' => '18 John St',
'users.addresses.state' => 'Sydney'
),
array(
'users.name' => 'Tim',
'users.age' => 34,
'users.addresses.street' => '143 Clark St',
'users.addresses.state' => 'Sydney'
)
Was ich will, dann mit der obigen Anordnung zu tun ist, jede Ergebniszeile in ein mehrdimensionales drehen Array wie folgt:
array (
'users' => array(
'name' = > 'Joshua',
'age' => 28,
'addresses' =>
array(
'street' => '3 Fake St',
'state' => 'Sydney'
),
array(
'street' => '16 New St',
'state' => 'Sydney'
),
array(
'street' => '140 Apple St',
'state' => 'Sydney'
)
),
),
array (
'users' => array(
'name' = > 'Tim',
'age' => 44,
'addresses'' =>
array(
'street' => '18 John St',
'state' => 'Sydney'
),
array(
'street' => '143 Clark St',
'state' => 'Melborune'
)
),
)
wie Sie jede Periode in der Array-Schlüssel der Datenbank zurückkehrt sollte aufgelöst werden sehen können, wandte sich dann in das mehrdimensionale Array und die letzte explodierte Schlüssel sollte die sein Schlüsselwert.
Ich habe dies mit Array Fetch und einige verrückte Überprüfung, die nur bestimmte Schlüsselnamen bekommt und fügt sie in ein Array, dann verwende ich Array_map, um die Array-Struktur zu bauen ... Aber es ist ziemlich langweilig für große Datensätze und jede Beziehung manuell schreiben zu müssen und alles zu kartieren ist albern, denke ich.
Ich habe versucht, etwas aufzubauen, das meiner obigen Beschreibung entspricht, aber ohne Glück, weshalb ich jetzt hier bin.
HINWEIS
Die oben ist ein Beispiel für einen Satz von Daten, Ich versuche, diese so zu schaffen, es leicht mit mehreren Sätzen von Daten durchgeführt werden kann und nicht mit einer Schleife zu schreiben und manuell erstellen das multidimensionale Array aus.
Das ist wirklich ungewöhnlich Aliase – Strawberry
Nun, ich spiele mit ihm um und versuchen, die Aliase zu verwenden, um beim Aufbau der Array-Verknüpfungen zu helfen. Ich bin total offen für Vorschläge. Ich habe einfach das Gefühl, dass ich einen wichtigen Teil des Puzzles vermisse, den ich vermisse. Hoffe, jemand kann einige Ideen oder Hinweise zünden, die ich vermisse oder über/unter denke – joshualawson
Nun - es ist nur eine einfache PHP-Schleife. Ich würde eine Lösung schreiben, aber ich bin wirklich schrecklich darin, Arrays in PHP zu manipulieren - aber es gibt Tausende von Beispielen. Aber ich würde '.' in einem Alias. Ich denke, es ist nur um Ärger zu bitten, – Strawberry