如何插入带有分支机构的公司,反之亦然


how to insert company with branches and vice-versa

我有模范公司,公司可以是一个分支机构因此,假设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。

1 |一 |
0 2 |乙 |1

这里 A 是

父项,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 );