代码之家  ›  专栏  ›  技术社区  ›  Steerpike

PHP/Laravel构造了一个包含许多关系的递归树

  •  0
  • Steerpike  · 技术社区  · 6 年前

    我有两张桌子,它们之间有很多关系

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

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

    影响表中的一些名称也存在于艺术家表中,并共享一个 qid . 我想把所有的艺术家和他们影响的艺术家都建一棵树。我想反复经历所有的影响 他们的 嵌套在父项下的影响。我不知道每段感情会有多深。

    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 回复  |  直到 6 年前
        1
  •  0
  •   a.mohamadi    6 年前

    我认为这个代码对你有用 但你需要让一个愚蠢的工匠成为你的根的父亲,并且需要在你呼唤它的时候把它传递给功能

    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;
    }
    

    但是我不知道如果影响不是人我该怎么办如果你对我的评论有问题!