如何插入公司与分支机构,反之亦然

时间:2016-03-16 07:15:36

标签: php laravel eloquent relational-database

我有Model Company,公司可以成为分公司 所以我们说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

我不知道我应该拥有什么样的关系以及如何插入和更新

1 个答案:

答案 0 :(得分:0)

我认为亲子关系也可以在类别列表中使用。

我所做的是创建一个表格

  

id |名字| PARENT_ID

如果类别项是父项,则parent_id将为0,而在其他情况下,它将是父项的相应ID。

  

1 | A | 0
  2 | B | 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 );