PHP / Laravel Построить рекурсивное дерево отношений ManyToMany - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть две таблицы с отношением ManyToMany между ними

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

и

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

Некоторые из имен в таблице влияния также существуют в таблице Artist и совместно используют 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 Ответ

0 голосов
/ 25 сентября 2018

Я думаю, что этот код работает для вас, но вам нужно сделать тупого ремесленника, который станет отцом для ваших корней, и передать его в работу, когда вы вызываете его

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

, но я не знаю, чтоДолжен ли я сделать, если влияние не является человеком, если у вас есть проблема комментарий для меня!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...