我有模范公司,公司可以是一个分支机构因此,假设A公司是B公司的分支机构,反之亦然
在数据库表中,我有这样的东西
公司
id name
1 Company A
2 Company B
3 Company C
company_branches
company_id branch_id
1 2
1 3
我的问题是,如果我想知道A公司的分支机构,那么没问题,但我想要的是,如果我想知道B公司的分支机构,我应该有A和C
我不知道我应该有什么关系以及插入和更新将如何
我认为父子关系在这里也可以像在类别列表中一样工作。
我所做的是创建一个表格,其中
ID | name | parent_id
如果类别项是父项,则parent_id将为 0,而在其他情况下,它将是父项的相应 ID。
这里 A 是1 |一 |
0 2 |乙 |1
父项,B 是 A 的子项。这将是在数据库中存储项目的表。为了有序地检索它们,我使用了这个递归函数:
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = $this->buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = $this->buildTree($rows);
print_r( $tree );