PHP / Laravel构建多对多关系的递归树

时间:2018-09-25 06:37:53

标签: php laravel recursion

我有两个表,它们之间具有ManyToMany关系

Artist
id:unique id
qid:shared id
name:string

Influence
id:id
qid:shared id
name:string
is_person:boolean

影响力表中的某些名称也存在于“艺术家”表中,并共享qid。 我想用所有存在于Artist DB中的Artist及其影响的树来构建一棵树。我想递归地浏览所有的影响,并得到嵌套在父项下的影响。我不知道每种关系会发展到什么程度。

public function getRelationships() {
    foreach($artists as $artist) {
        foreach($artist->influences as $influence) {
            if($influence->is_person) {
                $child = Artist::where('qid' , '=', $influence->qid);
                //somehow call getRelationships() here 
                //again with what I need to construct the relationship
                //tree
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为这段代码对您有用 但是您需要使一个愚蠢的工匠成为您父亲的父亲,并且需要在调用它时将其传递给功能

public function getRelationships($artist) {
   $returndata['Artist']=$artist;
    foreach($artist->influences as $influence) {
        if($influence->is_person) {
            $child = Artist::where('qid' , '=', $influence->qid);
            $returnData['influence'][]=getRelationships($child);
        }
   }
 return $returnData;
}

但是如果您对我有疑问,如果影响力不是人,我不知道该怎么办!