API die Kategorien wie so zurückgibt:Nesting Kategorien für MySQL
[1] => Array
(
[category_id] => 14308
[parent_id] => 14308
[level] => 0
)
[2] => Array
(
[category_id] => 179836
[parent_id] => 14308
[level] => 1
)
[3] => Array
(
[category_id] => 230022
[parent_id] => 179836
[level] => 2
)
Und ich brauche sie in der DB einzufügen wie so:
╔═════════════╦═══════════╗
║ category_id ║ parent_id ║
╠═════════════╬═══════════╣
║ 14308 ║ 0 ║
║ 179836 ║ 14308 ║
║ 230022 ║ 179836 ║
╚═════════════╩═══════════╝
..., die einfach, aber die category_to_path
Tisch ist knifflig, was ich nicht herausfinden kann. Es muss so sein:
╔═════════════╦═════════╦═══════╗
║ category_id ║ path_id ║ level ║
╠═════════════╬═════════╬═══════╣
║ 14308 ║ 14308 ║ 0 ║
║ 179836 ║ 14308 ║ 0 ║
║ 179836 ║ 179836 ║ 1 ║
║ 230022 ║ 14308 ║ 0 ║
║ 230022 ║ 179836 ║ 1 ║
║ 230022 ║ 230022 ║ 2 ║
╚═════════════╩═════════╩═══════╝
Dies ist, was ich bisher:
$path_ids;
for ($i=0; $i <= ($category->CategoryLevel-1); $i++) {
// -1 cause the API returns a non zero-based level
$path_ids[$i]['category_id'] = $category->CategoryID;
if ($category->CategoryLevel-1 == $i) {
$path_ids[$i]['path_id'] = $category->CategoryParentID[0];
}
elseif ($category->CategoryLevel-1) {
// ?
}
$path_ids[$i]['level'] = $i;
}
Im Allgemeinen erfordert dies möglicherweise eine rekursive Abfrage, um alle Pfade zu finden. –
Wissen Sie, wie viele Ebenen tief der tiefste Pfad in der Tabelle ist? –
@TimBiegeleisen 3 max – 3zzy