/ / Como exibir sturcture de árvore recursivamente na lâmina laravel? - matrizes, laravel, recursão

Como exibir sturcture de árvore de forma recursiva na lâmina laravel? - matrizes, laravel, recursão

Eu tenho uma saída de matriz é estrutura de árvore como esta:

insira a descrição da imagem aqui

Aqui, eu tenho uma tabela de banco de dados com relacionamento filho pai como:

public function up()
{
Schema::create("trees", function (Blueprint $table) {
$table->increments("id");
$table->integer("parent_id")->unsigned()->nullable();
$table->string("name");
$table->integer("has_child");
$table->integer("depth");
$table->timestamps();
$table->foreign("parent_id")->references("id")->on("trees")->onDelete("cascade");
}
}

Aqui,

Profundidade define profundidade da raiz na árvore, parent_id refere-se a pai na mesma tabela e has_child define existência de criança. Para a folha, has_child é zero e para o topo parent_id é nulo.

A profundidade pode ser qualquer valor até 5. No caso acima, há apenas 2 para fins de teste.

Aqui está o meu registro de banco de dados de amostra:

insira a descrição da imagem aqui

Eu tenho a estrutura de árvore acima recursivamente no controlador como:

    public function getChilds($d){
$tree = array();
$children = array();
$tree["parent"] = $d->toArray();
if($d->has_child==1){
$data = Tree::where("parent_id",$d->id)->get();
foreach ($data as $d) {
$first = $this->getChilds($d);
array_push($children, $first);
}
}
$tree["children"] = $children;
return $tree;
}

public function getTree(){
$tree = array();
$data = Tree::where("parent_id",null)->get();
foreach ($data as $d) {
$first = $this->getChilds($d);
array_push($tree, $first);
}
return view("tree",compact("tree"));
}

Agora,

Eu quero exibir esses dados em estrutura de árvore. Mas, por causa da profundidade variável, eu não consigo descobrir a profundidade a qual devo ir.

Existe alguma maneira de exibir esta estrutura de forma recursiva na lâmina laravel?

A saída esperada é algo como isto:

One0

One0Two0

One0Two0Three0

One0Two0Three1

One0Two1

One0Two1Three0

One0Two1Three1

One0Two2

One0Two2Three0

One0Two2Three1

Qualquer tipo de ajuda é apreciado.

Respostas:

0 para resposta № 1

Eu irei te recomendar o pacote laravel-nestedseto que tornará sua vida realmente fácil, por favor, siga a documentação do pacote para criar sua estrutura de tabela, recuperar, salvar e atualizar os dados recursivos será muito fácil. aqui está o link do pacote.

https://github.com/lazychaser/laravel-nestedset