【发布时间】:2016-10-01 06:20:12
【问题描述】:
API 像这样返回类别:
[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
)
我需要像这样将它们插入数据库中:
╔═════════════╦═══════════╗
║ category_id ║ parent_id ║
╠═════════════╬═══════════╣
║ 14308 ║ 0 ║
║ 179836 ║ 14308 ║
║ 230022 ║ 179836 ║
╚═════════════╩═══════════╝
...这很容易,但category_to_path 表很棘手,我似乎无法弄清楚。它需要是这样的:
╔═════════════╦═════════╦═══════╗
║ category_id ║ path_id ║ level ║
╠═════════════╬═════════╬═══════╣
║ 14308 ║ 14308 ║ 0 ║
║ 179836 ║ 14308 ║ 0 ║
║ 179836 ║ 179836 ║ 1 ║
║ 230022 ║ 14308 ║ 0 ║
║ 230022 ║ 179836 ║ 1 ║
║ 230022 ║ 230022 ║ 2 ║
╚═════════════╩═════════╩═══════╝
这是我目前所拥有的:
$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;
}
【问题讨论】:
-
一般来说,这可能需要递归查询才能找到所有路径。
-
你知道表中最深的路径有多少层吗?
-
@TimBiegeleisen 3 最大