我有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
我不知道我应该拥有什么样的关系以及如何插入和更新
答案 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 );